X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FMemcached_DataObject.php;h=0f2c54cade0a1dd7e39d4b9214fcf2719be95d99;hb=d582985c4253b89925e041a50c5cb2ab7cd274bc;hp=12e55af21f25c0bebd28a013288ebb729f8a6b7b;hpb=156207d58d41066bb43826d9e038c8ff44c9195f;p=quix0rs-gnu-social.git diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php index 12e55af21f..0f2c54cade 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -24,12 +24,20 @@ require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; class Memcached_DataObject extends DB_DataObject { function &staticGet($cls, $k, $v=NULL) { + if (is_null($v)) { + $v = $k; + # XXX: HACK! + $i = new $cls; + $keys = $i->keys(); + $k = $keys[0]; + unset($i); + } $i = Memcached_DataObject::getcached($cls, $k, $v); - if (!is_null($i)) { + if ($i) { return $i; } else { $i = DB_DataObject::staticGet($cls, $k, $v); - if (!is_null($i)) { + if ($i) { $i->encache(); } return $i; @@ -38,20 +46,18 @@ class Memcached_DataObject extends DB_DataObject function insert() { $result = parent::insert(); - if ($result) { - $this->encache(); - } return $result; } function update($orig=NULL) { - if (!is_null($orig)) { + if (is_object($orig) && $orig instanceof Memcached_DataObject) { $orig->decache(); # might be different keys } $result = parent::update($orig); if ($result) { $this->encache(); } + return $result; } function delete() { @@ -60,20 +66,11 @@ class Memcached_DataObject extends DB_DataObject } static function memcache() { - if (!common_config('memcached', 'enabled')) { - return NULL; - } else { - $cache = new Memcache(); - $res = $cache->connect(common_config('memcached', 'server'), - common_config('memcached', 'port')); - return ($res) ? $cache : NULL; - } + return common_memcache(); } static function cacheKey($cls, $k, $v) { - return common_cache_key(strtolower($cls) . ':' . - $k . ':' . - $v); + return common_cache_key(strtolower($cls).':'.$k.':'.$v); } static function getcached($cls, $k, $v) { @@ -100,13 +97,17 @@ class Memcached_DataObject extends DB_DataObject return false; } else { $primary = array(); - $types = ksort($this->keyTypes()); + $types = $this->keyTypes(); + ksort($types); foreach ($types as $key => $type) { if ($type == 'K') { $primary[] = $key; } else { - $c->set($this->cacheKey($this->tableName(), $key, $this->$key), - $this); + $v = $this->$key; + if (!is_null($v)) { + $c->set($this->cacheKey($this->tableName(), $key, $v), + $this); + } } } # XXX: figure out what to do with compound pkeys @@ -124,20 +125,19 @@ class Memcached_DataObject extends DB_DataObject return false; } else { $primary = array(); - $types = ksort($this->keyTypes()); + $types = $this->keyTypes(); + ksort($types); foreach ($types as $key => $type) { if ($type == 'K') { $primary[] = $this->$key; } else { - $c->delete($this->cacheKey($this->tableName(), $key, $this->$key), - $this); + $c->delete($this->cacheKey($this->tableName(), $key, $this->$key)); } } # XXX: figure out what to do with compound pkeys if (count($primary) == 1) { $key = $primary[0]; - $c->delete($this->cacheKey($this->tableName(), $key, $this->$key), - $this); + $c->delete($this->cacheKey($this->tableName(), $key, $this->$key)); } } }