From: Evan Prodromou Date: Tue, 5 Jan 2010 01:14:54 +0000 (-1000) Subject: Merge branch 'master' into 0.9.x X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=7aeb11bb077079d5008e9c07e3945b466eb2d3b8;p=quix0rs-gnu-social.git Merge branch 'master' into 0.9.x Conflicts: actions/publictagcloud.php classes/Memcached_DataObject.php --- 7aeb11bb077079d5008e9c07e3945b466eb2d3b8 diff --cc classes/Memcached_DataObject.php index a77e43d38c,ca360d4111..a3a69e6672 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@@ -19,9 -19,11 +19,9 @@@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } -require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; - class Memcached_DataObject extends DB_DataObject { - /** + /** * Destructor to free global memory resources associated with * this data object when it's unset or goes out of scope. * DB_DataObject doesn't do this yet by itself. @@@ -35,6 -37,42 +35,42 @@@ } } + /** + * Magic function called at serialize() time. + * + * We use this to drop a couple process-specific references + * from DB_DataObject which can cause trouble in future + * processes. + * + * @return array of variable names to include in serialization. + */ + function __sleep() + { + $vars = array_keys(get_object_vars($this)); + $skip = array('_DB_resultid', '_link_loaded'); + return array_diff($vars, $skip); + } + + /** + * Magic function called at unserialize() time. + * + * Clean out some process-specific variables which might + * be floating around from a previous process's cached + * objects. + * + * Old cached objects may still have them. + */ + function __wakeup() + { + // Refers to global state info from a previous process. + // Clear this out so we don't accidentally break global + // state in *this* process. + $this->_DB_resultid = null; - ++ + // We don't have any local DBO refs, so clear these out. + $this->_link_loaded = false; + } + /** * Wrapper for DB_DataObject's static lookup using memcached * as backing instead of an in-process cache array.