<?php 
 
/* 
 * This file is part of the Predis package. 
 * 
 * (c) Daniele Alessandri <[email protected]> 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
require __DIR__.'/shared.php'; 
 
// This example demonstrates how to use Predis to save PHP sessions on Redis. 
// 
// The value of `session.gc_maxlifetime` in `php.ini` will be used by default as 
// the TTL for keys holding session data but this value can be overridden when 
// creating the session handler instance using the `gc_maxlifetime` option. 
// 
// NOTE: this class requires PHP >= 5.4 but can be used on PHP 5.3 if a polyfill 
// for SessionHandlerInterface is provided either by you or an external package 
// like `symfony/http-foundation`. 
// 
// See http://www.php.net/class.sessionhandlerinterface.php for more details. 
// 
 
if (!interface_exists('SessionHandlerInterface')) { 
    die('ATTENTION: the session handler implemented by Predis requires PHP >= 5.4.0 '. 
        "or a polyfill for SessionHandlerInterface provided by an external package.\n"); 
} 
 
// Instantiate a new client just like you would normally do. Using a prefix for 
// keys will effectively prefix all session keys with the specified string. 
$client = new Predis\Client($single_server, array('prefix' => 'sessions:')); 
 
// Set `gc_maxlifetime` to specify a time-to-live of 5 seconds for session keys. 
$handler = new Predis\Session\Handler($client, array('gc_maxlifetime' => 5)); 
 
// Register the session handler. 
$handler->register(); 
 
// We just set a fixed session ID only for the sake of our example. 
session_id('example_session_id'); 
 
session_start(); 
 
if (isset($_SESSION['foo'])) { 
    echo "Session has `foo` set to {$_SESSION['foo']}", PHP_EOL; 
} else { 
    $_SESSION['foo'] = $value = mt_rand(); 
    echo "Empty session, `foo` has been set with $value", PHP_EOL; 
} 
 
 |