]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Cache fixes:
authorBrion Vibber <brion@pobox.com>
Tue, 5 Jan 2010 23:05:53 +0000 (15:05 -0800)
committerBrion Vibber <brion@pobox.com>
Tue, 5 Jan 2010 23:05:53 +0000 (15:05 -0800)
* We now cache negative lookups; clear them in Memcached_DataObject->insert()
* Mark file.url as a unique key in statusnet.ini so its negative lookups are cleared properly (first save of a notice with a new URL was failing due to double-insert)
* Now using serialization for default in-process cache instead of just saving objects; avoids potential corruption if you save an object to cache, change the original object, then fetch the same key from cache again

classes/Memcached_DataObject.php
classes/statusnet.ini
lib/cache.php

index aab1cace6dbe2524a80321de59c4a4e7ad936649..c31b2a54680756ed0bc4d09dac7186e3224376c6 100644 (file)
@@ -142,6 +142,7 @@ class Memcached_DataObject extends DB_DataObject
 
     function insert()
     {
+        $this->decache(); // in case of cached negative lookups
         $result = parent::insert();
         return $result;
     }
index ac31148daa723a93b10cf49196bf56c4d4645841..0db2c5d6e35eda5b3b24d8fb0f87e8e5336cab16 100644 (file)
@@ -92,6 +92,7 @@ modified = 384
 
 [file__keys]
 id = N
+url = U
 
 [file_oembed]
 file_id = 129
index 85e8badc174313ca3b735199f24290a1fc571294..b7b34c050043ba7d5257722bc77dfae9f39073d1 100644 (file)
@@ -120,7 +120,7 @@ class Cache
 
         if (Event::handle('StartCacheGet', array(&$key, &$value))) {
             if (array_key_exists($key, $this->_items)) {
-                $value = $this->_items[$key];
+                $value = unserialize($this->_items[$key]);
             }
             Event::handle('EndCacheGet', array($key, &$value));
         }
@@ -146,7 +146,7 @@ class Cache
         if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag,
                                                  &$expiry, &$success))) {
 
-            $this->_items[$key] = $value;
+            $this->_items[$key] = serialize($value);
 
             $success = true;