Маленькая статья по Zend Framework.
Точнее интерпретация раздела из руководства пользователя Zend_Framework.
Оригинал: Zend_Session_SaveHandler_DbTable
Этот самый Zend_Session_SaveHandler_DbTable позволяет сконфигурировать Zend_Session так, чтобы информация о сессиях (и данные сессии ) хранилась в БД.
Для хранения сессии нам нужно сохранить, как минимум четыре её параметра. А именно:
С данными которые нужно хранить определились, создадим таблицу в базе данных.
По умолчанию идентификатор сессии будет первичным ключём.
Далее. (Всё остальное пишется в index.php)
$config
name — Имя таблицы в БД
primary — Поле таблицы являющееся первичным ключём в таблице
modifiedColumn — Поле таблицы Даты модификации
dataColumn — Поле таблицы хрянящее данные сессии
lifetimeColumn — Поле таблицы хрянящее время жизни
Второй пример в руководстве рассматривает вариант с использованием в качестве первичного ключа нескольких значений. Переписывать сюда его не стал.
Для primary указываем массив содержащий список полей которые входят в первичный ключ.
Через primaryAssignment присваиваим соответствующие значения.
sessionId — Идентификатор сессии
sessionSavePath — Аабсолютный путь сессии
sessionName — Имя сессии
Точнее интерпретация раздела из руководства пользователя Zend_Framework.
Оригинал: Zend_Session_SaveHandler_DbTable
Этот самый Zend_Session_SaveHandler_DbTable позволяет сконфигурировать Zend_Session так, чтобы информация о сессиях (и данные сессии ) хранилась в БД.
Zend_Session_SaveHandler_DbTable
Для хранения сессии нам нужно сохранить, как минимум четыре её параметра. А именно:
- sid — Он же идентификатор сессии, и длинна котого равна 32
- modified — Дата модификации сессии, в формате unix timestamp
- lifetime — Вермя жизни этой самой сессии (modified + lifetime > time())
- 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 — Имя сессии
