Маленькая статья по Zend Framework.
Точнее интерпретация раздела из руководства пользователя Zend_Framework.

Оригинал: Zend_Session_SaveHandler_DbTable

Этот самый Zend_Session_SaveHandler_DbTable позволяет сконфигурировать Zend_Session так, чтобы информация о сессиях (и данные сессии ) хранилась в БД.

Zend_Session_SaveHandler_DbTable


Для хранения сессии нам нужно сохранить, как минимум четыре её параметра. А именно:
  1. sid — Он же идентификатор сессии, и длинна котого равна 32
  2. modified — Дата модификации сессии, в формате unix timestamp
  3. lifetime — Вермя жизни этой самой сессии (modified + lifetime > time())
  4. data — Собственно данные хранящиеся в сессии в сериализованом виде

С данными которые нужно хранить определились, создадим таблицу в базе данных.

CREATE TABLE `session` (
`id` char(32),
`modified` int,
`lifetime` int,
`data` text,
PRIMARY KEY (`id`)
);

По умолчанию идентификатор сессии будет первичным ключём.
Далее. (Всё остальное пишется в index.php)

// Настраиваим соеденение с БД, и получаем указатель в $db
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' =>'example.com',
'username' => 'dbuser',
'password' => '******',
'dbname' => 'dbname'
));

//Устанавливаем адаптер по умолчанию
Zend_Db_Table_Abstract::setDefaultAdapter($db);

// Создаем config для Zend_Session_SaveHandler_DbTable
$config = array(
'name' => 'session',
'primary' => 'id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime'
);

// Создаем Zend_Session_SaveHandler_DbTable
// и устанавливаем для Zend_Session
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));

//Стартуем сессия (Это по желанию)
Zend_Session::start();

$config
name — Имя таблицы в БД
primary — Поле таблицы являющееся первичным ключём в таблице
modifiedColumn — Поле таблицы Даты модификации
dataColumn — Поле таблицы хрянящее данные сессии
lifetimeColumn — Поле таблицы хрянящее время жизни

Второй пример в руководстве рассматривает вариант с использованием в качестве первичного ключа нескольких значений. Переписывать сюда его не стал.

Для primary указываем массив содержащий список полей которые входят в первичный ключ.

Через primaryAssignment присваиваим соответствующие значения.
sessionId — Идентификатор сессии
sessionSavePath — Аабсолютный путь сессии
sessionName — Имя сессии