is_installed()) { die("Error: {$this->engine} extension not installed"); } $this->cfg = $cfg; $this->redis = new Redis(); $this->dbg_enabled = sql_dbg_enabled(); $this->prefix = $prefix; } function connect () { $connect_type = ($this->cfg['pconnect']) ? 'pconnect' : 'connect'; $this->cur_query = $connect_type .' '. $this->cfg['host'] .':'. $this->cfg['port']; $this->debug('start'); if (@$this->redis->$connect_type($this->cfg['host'], $this->cfg['port'])) { $this->connected = true; } if (!$this->connected && $this->cfg['con_required']) { $server = (DBG_USER) ? "'" . $this->cfg['host'] . "'" : ''; header("HTTP/1.0 503 Service Unavailable"); $con_error = "Could not connect to {$this->engine} server $server"; if (DBG_LOG) { dbg_log($con_error, "{$this->engine}-CACHE-connect-FAIL"); } die($con_error); } $this->debug('stop'); $this->cur_query = null; } function store ($title, $var) { if (!$this->connected) $this->connect(); $this->data[$title] = $var; $this->cur_query = "cache->set('$title')"; $this->debug('start'); $this->debug('stop'); $this->cur_query = null; $this->num_queries++; return (bool) $this->redis->set($this->prefix . $title, serialize($var)); } function clean () { if (!$this->connected) $this->connect(); foreach ($this->known_items as $title => $script_name) { $this->cur_query = "cache->rm('$title')"; $this->debug('start'); $this->debug('stop'); $this->cur_query = null; $this->num_queries++; $this->redis->del($this->prefix . $title); } } function _fetch_from_store () { if (!$items = $this->queued_items) { $src = $this->_debug_find_caller('enqueue'); trigger_error("Datastore: item '$item' already enqueued [$src]", E_USER_ERROR); } if (!$this->connected) $this->connect(); foreach ($items as $item) { $this->cur_query = "cache->get('$item')"; $this->debug('start'); $this->debug('stop'); $this->cur_query = null; $this->num_queries++; $this->data[$item] = unserialize($this->redis->get($this->prefix . $item)); } } function is_installed () { return class_exists('Redis'); } }