Zend\Session

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.

blog comments powered by Disqus