From: Evan Prodromou Date: Fri, 26 Sep 2008 16:16:52 +0000 (-0400) Subject: rename cached object file X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=011ea460229a9024e556d38d86b2d05dcf4ef27a;p=quix0rs-gnu-social.git rename cached object file darcs-hash:20080926161652-5ed1f-45aee985c6755642d346b864926b2346900c4055.gz --- diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php new file mode 100644 index 0000000000..e41613c91c --- /dev/null +++ b/classes/Memcached_DataObject.php @@ -0,0 +1,144 @@ +. + */ + +if (!defined('LACONICA')) { exit(1); } + +require_once INSTALLDIR.'classes/Memcached_DataObject.php'; + +class Memcached_DataObject extends DB_DataObject +{ + static function &staticGet($cls, $k, $v=NULL) { + $i = $this->getcached($cls, $k, $v); + if (!is_null($i)) { + return $i; + } else { + $i = parent::staticGet($k, $v); + if (!is_null($i)) { + $i->encache(); + } + return $i; + } + } + + function insert() { + $result = parent::insert(); + if ($result) { + $this->encache(); + } + return $result; + } + + function update($orig=NULL) { + if (!is_null($orig)) { + $orig->decache(); # might be different keys + } + $result = parent::update($orig); + if ($result) { + $this->encache(); + } + } + + function delete() { + $this->decache(); # while we still have the values! + return parent::delete(); + } + + 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; + } + } + + static function cacheKey($cls, $k, $v) { + return common_cache_key(strtolower($cls) . ':' . + $k . ':' . + $v); + } + + static function getcached($cls, $k, $v) { + $c = Memcached_DataObject::memcache(); + if (!$c) { + return false; + } else { + return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v)); + } + } + + function keyTypes() { + global $_DB_DATAOBJECT; + if (!isset($_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"])) { + $this->databaseStructure(); + + } + return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"]; + } + + function encache() { + $c = $this->memcache(); + if (!$c) { + return false; + } else { + $primary = array(); + $types = ksort($this->keyTypes()); + foreach ($types as $key => $type) { + if ($type == 'K') { + $primary[] = $key; + } else { + $c->set($this->cacheKey($this->tableName(), $key, $this->$key), + $this); + } + } + # XXX: figure out what to do with compound pkeys + if (count($primary) == 1) { + $key = $primary[0]; + $c->set($this->cacheKey($this->tableName(), $key, $this->$key), + $this); + } + } + } + + function decache() { + $c = $this->memcache(); + if (!$c) { + return false; + } else { + $primary = array(); + $types = ksort($this->keyTypes()); + foreach ($types as $key => $type) { + if ($type == 'K') { + $primary[] = $this->$key; + } else { + $c->delete($this->cacheKey($this->tableName(), $key, $this->$key), + $this); + } + } + # 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); + } + } + } +} diff --git a/classes/Memcached_Object.php b/classes/Memcached_Object.php deleted file mode 100644 index e41613c91c..0000000000 --- a/classes/Memcached_Object.php +++ /dev/null @@ -1,144 +0,0 @@ -. - */ - -if (!defined('LACONICA')) { exit(1); } - -require_once INSTALLDIR.'classes/Memcached_DataObject.php'; - -class Memcached_DataObject extends DB_DataObject -{ - static function &staticGet($cls, $k, $v=NULL) { - $i = $this->getcached($cls, $k, $v); - if (!is_null($i)) { - return $i; - } else { - $i = parent::staticGet($k, $v); - if (!is_null($i)) { - $i->encache(); - } - return $i; - } - } - - function insert() { - $result = parent::insert(); - if ($result) { - $this->encache(); - } - return $result; - } - - function update($orig=NULL) { - if (!is_null($orig)) { - $orig->decache(); # might be different keys - } - $result = parent::update($orig); - if ($result) { - $this->encache(); - } - } - - function delete() { - $this->decache(); # while we still have the values! - return parent::delete(); - } - - 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; - } - } - - static function cacheKey($cls, $k, $v) { - return common_cache_key(strtolower($cls) . ':' . - $k . ':' . - $v); - } - - static function getcached($cls, $k, $v) { - $c = Memcached_DataObject::memcache(); - if (!$c) { - return false; - } else { - return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v)); - } - } - - function keyTypes() { - global $_DB_DATAOBJECT; - if (!isset($_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"])) { - $this->databaseStructure(); - - } - return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"]; - } - - function encache() { - $c = $this->memcache(); - if (!$c) { - return false; - } else { - $primary = array(); - $types = ksort($this->keyTypes()); - foreach ($types as $key => $type) { - if ($type == 'K') { - $primary[] = $key; - } else { - $c->set($this->cacheKey($this->tableName(), $key, $this->$key), - $this); - } - } - # XXX: figure out what to do with compound pkeys - if (count($primary) == 1) { - $key = $primary[0]; - $c->set($this->cacheKey($this->tableName(), $key, $this->$key), - $this); - } - } - } - - function decache() { - $c = $this->memcache(); - if (!$c) { - return false; - } else { - $primary = array(); - $types = ksort($this->keyTypes()); - foreach ($types as $key => $type) { - if ($type == 'K') { - $primary[] = $this->$key; - } else { - $c->delete($this->cacheKey($this->tableName(), $key, $this->$key), - $this); - } - } - # 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); - } - } - } -}