Become Zend Certified

Prepare for the ZCE exam using our quizzes (web or iPad/iPhone). More info...

When you're ready get 7.5% off your exam voucher using voucher CJQNOV23 at the Zend Store


The basic setup for Zend_Session_SaveHandler_DbTable must at least have four columns, denoted in the config array or Zend_Config object: primary, which is the primary key and defaults to just the session id which by default is a string of length 32; modified, which is the unix timestamp of the last modified date; lifetime, which is the lifetime of the session (modified + lifetime > time();); and data, which is the serialized data stored in the session

Example 952. Basic Setup

CREATE TABLE `session` (
  `id` char(32),
  `modified` int,
  `lifetime` int,
  `data` text,
  PRIMARY KEY (`id`)
//get your database connection ready
$db Zend_Db::factory('Pdo_Mysql', array(
'host'        =>'',
'username'    => 'dbuser',
'password'    => '******',
'dbname'    => 'dbname'

//you can either set the Zend_Db_Table default adapter
//or you can pass the db connection straight to the save handler $config
$config = array(
'name'           => 'session',
'primary'        => 'id',
'modifiedColumn' => 'modified',
'dataColumn'     => 'data',
'lifetimeColumn' => 'lifetime'

//create your Zend_Session_SaveHandler_DbTable and
//set the save handler for Zend_Session
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));

//start your session!

//now you can use Zend_Session like any other time

You can also use Multiple Columns in your primary key for Zend_Session_SaveHandler_DbTable.

Example 953. Using a Multi-Column Primary Key

CREATE TABLE `session` (
    `session_id` char(32) NOT NULL,
    `save_path` varchar(32) NOT NULL,
    `name` varchar(32) NOT NULL DEFAULT '',
    `modified` int,
    `lifetime` int,
    `session_data` text,
    PRIMARY KEY (`Session_ID`, `save_path`, `name`)
//setup your DB connection like before
//NOTE: this config is also passed to Zend_Db_Table so anything specific
//to the table can be put in the config as well
$config = array(
'name'              => 'session'//table name as per Zend_Db_Table
'primary'           => array(
'session_id',   //the sessionID given by PHP
'save_path',    //session.save_path
'name',         //session name
'primaryAssignment' => array(
//you must tell the save handler which columns you
        //are using as the primary key. ORDER IS IMPORTANT
'sessionId'//first column of the primary key is of the sessionID
'sessionSavePath'//second column of the primary key is the save path
'sessionName'//third column of the primary key is the session name
'modifiedColumn'    => 'modified',     //time the session should expire
'dataColumn'        => 'session_data'//serialized data
'lifetimeColumn'    => 'lifetime',     //end of life for a specific record

//Tell Zend_Session to use your Save Handler
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));

//start your session

//use Zend_Session as normal

Zend Framework