servers = array( '127.0.0.1' ); $this->_Memcache =& new Memcache(); // several servers - use addServer foreach ($this->servers as $server) { $parts = explode(':', $server); $host = $parts[0]; $port = ((isset($parts[1])) ? $parts[1] : 11211); // default port if ($this->_Memcache->addServer($host, $port)) { $this->_connected = true; } } return $this->_connected; } // this is used exclusively by the set method to keep a list of keys that we have going // ------------------------------------------------------------------------------------ private function register_key($key) { // debug('setting key'); $register = $this->get('register'); $register[$key] = date('Y-m-d H:m:s'); $this->_Memcache->set('register', $register, 0, 0); } private function unregister_key($key) { $register = $this->get('register'); if(isset($register[$key])) { unset($register[$key]); } $this->_Memcache->set('register', $register, 0, 0); } // basicly a var_dump for memcache // ------------------------------- function debug() { $register = $this->get('register'); foreach($register as $key => $value) { $dumpArray[$key] = $this->get($key); } debug($dumpArray); } // will dump a list of registered keys // ----------------------------------- function register_list() { $register = $this->get('register'); // debug($register);exit; foreach($register as $key => $value) { $dumpArray[] = $key; } debug($dumpArray); } function use_cache($controller,$key) { // check if this is cached // ----------------------- if($this->get($key) === false || !isset($controller->caching) || $controller->caching === false) { return false; } else { return $this->get($key); } } /** * Set a value in the cache * * Expiration time is one hour if not set */ function set($key, $var, $expires = false) { if (defined('DISABLE_CACHE') || !$this->_connected) { return false; } if (!is_numeric($expires)) { $expires = strtotime($expires); } // check if we want to cache for ever // ---------------------------------- if(!$expires) { $expires = 0; } else { $expires = time()+$expires; } $this->register_key($key); return $this->_Memcache->set($key, $var, 0, $expires); } /** * Get a value from cache */ function get($key) { if (defined('DISABLE_CACHE') || !$this->_connected) { return false; } return $this->_Memcache->get($key); } /** * Remove value from cache */ function delete($key) { if (defined('DISABLE_CACHE') || !$this->_connected) { return false; } $this->unregister_key($key); return $this->_Memcache->delete($key); } function getExtendedStats() { debug($this->_Memcache->getExtendedStats());exit; } } ?>