<?php /** * codeigniter-memcache v0.1 * * codeigniter-memcache is a codeigniter library to work with memcached easily. * * * @file MemcacheLibrary.php * @copyright 2010 egnity - egnity.com * @author Emre Yilmaz <mail@emreyilmaz.me> * @license GNU General Public License * @version 0.1 */ class MemcacheLibrary { /** * variable that holds memcached backend instance * * @var object * @access public */ public $memcachedInstance; /** * variable that holds servers for the memcache * * @var array * @access public */ public $servers = array(); /** * main CodeIgniter instance * * @var object * @access public */ public $CI; /** * constructor function for the library */ public function __construct() { /* initialize memcached instance */ if(class_exists("Memcache")) { $this->memcachedInstance = new Memcache(); } else { throw new Exception( "Memcached client doesn't exists in your PHP configuration" ); } /* load super CI instance */ $this->CI =& get_instance(); /* load default server info */ $this->CI->config->load("memcache"); /* connect to default server */ if($this->CI->config->item("MEMCACHE_HOST") && $this->CI->config->item("MEMCACHE_PORT") !== false) { $this->addServer($this->CI->config->item("MEMCACHE_HOST"), $this->CI->config->item("MEMCACHE_PORT")); } } /** * adder function for the memcache servers * * @access public * @return void */ public function addServer($server, $port) { $this->servers[] = array( "server" => $server, "port" => $port, ); $this->memcachedInstance->addServer($server, $port); } /** * gets related key from the memcache * * @access public */ public function get($key) { $this->logDebugMessage(sprintf("%s key requested from memcache", $key)); // hide notice if server is unreachable $old_error_level = error_reporting(); error_reporting($old_error_level & ~E_NOTICE); $ret = $this->memcachedInstance->get($key); error_reporting($old_error_level); return $ret; } /** * sets related key to the memcache * * @access public */ public function set($key, $value, $expire = null) { $this->logDebugMessage( sprintf("%s key set to memcache. (expire: %s)",$key, $expire) ); return $this->memcachedInstance->set($key, $value, null, $expire); } /** * deletes related key from the memcache * * @access public */ public function delete($key) { $this->logDebugMessage(sprintf("%s key deleted from memcache.", $key)); return $this->memcachedInstance->delete($key); } /** * increments related key from the memcache * * @access public */ public function increment($key, $offset = 1) { $this->logDebugMessage(sprintf("%s key incremented %s times", $key, $offset)); return $this->memcachedInstance->increment($key, $offset); } /** * decrements related key from the memcache * * @access public */ public function decrement($key, $offset = 1) { $this->logDebugMessage(sprintf("%s key decremented %s times", $key, $offset)); return $this->memcachedInstance->decrement($key, $offset); } /** * gets running memcached servers. * * @access public * @return array */ public function getRunningServers() { return $this->servers; } /** * array of server statistics, one entry per server. * * @access public * @return array */ public function getStatistics() { return $this->memcachedInstance->getStats(); } /** * Invalidates all items from the memcache. * * @access public * @return boolean */ public function flush($delay = 0) { $this->logDebugMessage(sprintf("memcache flushed! (delay: %s)", $delay)); return $this->memcachedInstance->flush($delay); } /** * logs the memcache actions to the codeigniter's main logging system. * * @access private */ private function logDebugMessage($message) { log_message("debug", $message); } } # vim: set noet: