'apc', * 'requests' => 10000 * ); * Lifetime does not need to be set as it is * overridden by the session expiration setting. * * $Id: Cache.php 4679 2009-11-10 01:45:52Z isaiah $ * * @package Core * @author Kohana Team * @copyright (c) 2007-2009 Kohana Team * @license http://kohanaphp.com/license */ class Session_Cache_Driver implements Session_Driver { protected $cache; protected $encrypt; public function __construct() { // Load Encrypt library if (Kohana::config('session.encryption')) { $this->encrypt = new Encrypt; } Kohana_Log::add('debug', 'Session Cache Driver Initialized'); } public function open($path, $name) { $config = Kohana::config('session.storage'); if (empty($config)) { // Load the default group $config = Kohana::config('cache.default'); } elseif (is_string($config)) { $name = $config; // Test the config group name if (($config = Kohana::config('cache.'.$config)) === NULL) throw new Kohana_Exception('The :group: group is not defined in your configuration.', array(':group:' => $name)); } $config['lifetime'] = (Kohana::config('session.expiration') == 0) ? 86400 : Kohana::config('session.expiration'); $this->cache = new Cache($config); return is_object($this->cache); } public function close() { return TRUE; } public function read($id) { $id = 'session_'.$id; if ($data = $this->cache->get($id)) { return Kohana::config('session.encryption') ? $this->encrypt->decode($data) : $data; } // Return value must be string, NOT a boolean return ''; } public function write($id, $data) { if ( ! Session::$should_save) return TRUE; $id = 'session_'.$id; $data = Kohana::config('session.encryption') ? $this->encrypt->encode($data) : $data; return $this->cache->set($id, $data); } public function destroy($id) { $id = 'session_'.$id; return $this->cache->delete($id); } public function regenerate() { session_regenerate_id(TRUE); // Return new session id return session_id(); } public function gc($maxlifetime) { // Just return, caches are automatically cleaned up return TRUE; } } // End Session Cache Driver