Session Save Handlers

Zend Framework comes with a standard set of save handler classes which are ready for you to use. Save Handlers themselves are decoupled from PHP’s save handler functions and are only implemented as a PHP save handler when utilized in conjunction with Zend\Session\SessionManager.

orphan:

Cache

Zend\Session\SaveHandler\Cache allows you to provide an instance of Zend\Cache to be utilized as a session save handler. Generally if you are utilizing the Cache save handler; you are likely using products such as memcached.

Basic usage

A basic example is one like the following:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use Zend\Cache\StorageFactory;
use Zend\Session\SaveHandler\Cache;
use Zend\Session\SessionManager;

$cache = StorageFactory::factory(array(
    'adapter' => array(
       'name' => 'memcached',
       'options' => array(
           'server' => '127.0.0.1',
       ),
    )
));
$saveHandler = new Cache($cache);
$manager = new SessionManager();
$manager->setSaveHandler($saveHandler);
orphan:

DbTableGateway

Zend\Session\SaveHandler\DbTableGateway allows you to utilize Zend\Db as a session save handler. Setup of the DbTableGateway requires an instance of Zend\Db\TableGateway\TableGateway and an instance of Zend\Session\SaveHandler\DbTableGatewayOptions. In the most basic setup, a TableGateway object and using the defaults of the DbTableGatewayOptions will provide you with what you need.

Creating the database table

1
2
3
4
5
6
7
8
CREATE TABLE `session` (
    `id` char(32),
    `name` char(32),
    `modified` int,
    `lifetime` int,
    `data` text,
     PRIMARY KEY (`id`, `name`)
);

Basic usage

A basic example is one like the following:

1
2
3
4
5
6
7
8
9
use Zend\Db\TableGateway\TableGateway;
use Zend\Session\SaveHandler\DbTableGateway;
use Zend\Session\SaveHandler\DbTableGatewayOptions;
use Zend\Session\SessionManager;

$tableGateway = new TableGateway('session', $adapter);
$saveHandler  = new DbTableGateway($tableGateway, new DbTableGatewayOptions());
$manager      = new SessionManager();
$manager->setSaveHandler($saveHandler);
orphan:

MongoDB

Zend\Session\SaveHandler\MongoDB allows you to provide a MongoDB instance to be utilized as a session save handler. You provide the options in the Zend\Session\SaveHandler\MongoDBOptions class.

Basic Usage

A basic example is one like the following:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use Mongo;
use Zend\Session\SaveHandler\MongoDB;
use Zend\Session\SaveHandler\MongoDBOptions;
use Zend\Session\SessionManager;

$mongo = new Mongo();
$options = new MongoDBOptions(array(
    'database'   => 'myapp',
    'collection' => 'sessions',
));
$saveHandler = new MongoDB($mongo, $options);
$manager     = new SessionManager();
$manager->setSaveHandler($saveHandler);

Custom Save Handlers

There may be cases where you want to create a save handler where a save handler currently does not exist. Creating a custom save handler is much like creating a custom PHP save handler. All save handlers must implement Zend\Session\SaveHandler\SaveHandlerInterface. Generally if your save handler has options you will create another options class for configuration of the save handler.