From: Brion Vibber Date: Tue, 5 Jan 2010 23:05:53 +0000 (-0800) Subject: Cache fixes: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=aff78e51216e09a6e5c95c775d636530c85736fc;p=quix0rs-gnu-social.git Cache fixes: * 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 --- diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php index aab1cace6d..c31b2a5468 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -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; } diff --git a/classes/statusnet.ini b/classes/statusnet.ini index ac31148daa..0db2c5d6e3 100644 --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -92,6 +92,7 @@ modified = 384 [file__keys] id = N +url = U [file_oembed] file_id = 129 diff --git a/lib/cache.php b/lib/cache.php index 85e8badc17..b7b34c0500 100644 --- a/lib/cache.php +++ b/lib/cache.php @@ -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;