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.
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.
A basic example is one like the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 | use Zend\Cache\StorageFactory;
use Zend\Session\SaveHandler\Cache;
use Zend\Session\SessionManager;
$cache = StorageFactory::factory(array(
'name' => 'memcached',
'options' => array(
'server' => '127.0.0.1',
),
));
$saveHandler = new Cache($cache);
$manager = new SessionManager();
$manager->setSaveHandler($saveHandler);
|
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.
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`)
);
|
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);
|
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.
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);
|
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.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.