. * */ namespace Vvveb\System\Cache; class Memcached { private $expire; private $memcached; private $cachePrefix = ''; public function stats($time = false) { $stats = $this->memcached->getStats(); /* [curr_items] => 0 [total_items] => 0 [bytes] => 0 */ return $stats; } public function purge($namespace = false, $time_delay = 0) { return $this->memcached->flush($time_delay); } public function __construct($options) { //$this->expire = $expire; $this->cachePrefix = crc32(DIR_ROOT); //unique instance for shared hosting $this->memcached = new \Memcached(); $this->memcached->addServers($options['servers']); if (isset($options['options'])) { foreach ($options['options'] as $key => $value) { $this->memcached->setOption($key, $value); } } return $this->memcached; } private function key($namespace, $key = '') { return $this->cachePrefix . ($namespace ? ".$namespace" : '') . $key; } public function get($namespace, $key) { return $this->memcached->get($this->key($namespace, $key)); } public function set($namespace, $key, $value, $expire = 0) { return $this->memcached->set($this->key($namespace, $key), $value, $expire); } public function getMulti($namespace, $keys, $serverKey = false) { if ($serverKey) { return $this->memcached->getMultiByKey($serverKey, $keys); } else { return $this->memcached->getMulti($keys); } } public function setMulti($namespace, $items, $expire = 0, $serverKey = false) { if ($serverKey) { return $this->memcached->setMulti($items, $expire); } else { return $this->memcached->setMultiByKey($serverKey, $items, $expire); } } public function delete($namespace, $key) { $this->memcached->delete($this->key($namespace, $key)); } }