function session($name = 'core', $adapter = 'session', $ttl = 3600) { switch ($adapter) { case 'session': return lib('session', [$name]); case 'redis': return RedisSession::instance($name, $ttl); } }
/** * OPEN * - Connect to Redis * - Calculate and set timeout for SETEX * - Set session_name as key prefix */ public static function __open($path, $name) { $hostname = Configure::read('RedisSession.hostname'); $port = Configure::read('RedisSession.port'); if ($hostname !== null && $port !== null) { $redis = new iRedisForRedisSession(compact('hostname', 'port')); } else { $redis = new iRedisForRedisSession(); } self::$store = $redis; }
<?php //ini_set('session.serialize_handler', 'wddx'); require_once __DIR__ . '/../redis-session.php'; $redis = new Predis\Client(); array_map(function ($key) use(&$redis) { //var_dump($redis->get($key)); $redis->del($key); }, $redis->keys("session:php:*")); RedisSession::start(); $_SESSION['test'] = "ohai"; $_SESSION['md'] = array('test2' => array('multidimensional' => 'array')); $_SESSION['more'] = new stdClass();
private static $host; private static $port; private static $weight; private static $prefix; private static $database; private static $timeout = 3; public static function start($options) { self::setOptions($options); self::connectRedis(); session_start(); } private static function connectRedis() { if (preg_match('/^tcp:\\/\\//i', self::$host)) { $host = rtrim(self::$host, '/'); } else { $host = 'tcp://' . rtrim(self::$host, '/'); } $port = empty(self::$port) ? self::DEFAULT_REDIS_PORT : intval(self::$port); $query = array(); } private static function setOptions($options) { foreach ($options as $option => $value) { self::${$option} = $value; } } } RedisSession::start(array('host' => '', 'port' => '', 'weight' => 0, 'prefix' => 'MySession:', 'database' => 0));