Tôi vừa quản lý để làm cho điều này hoạt động:
Application.ini của tôi:
resources.db.isDefaultTableAdapter = true
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.dbname = "dbname"
resources.db.params.username = "username"
resources.db.params.password = "password"
bootstrap.php của tôi:
protected function _initSession() {
$resource = $this->getPluginResource('db');
$dbAdapter = $db = $resource->getDbAdapter();
Zend_Registry::set("db", $dbAdapter);
Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
$config = array(
'name' => 'session',
'primary' => 'id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime',
'db' => $dbAdapter
);
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
Zend_Session::start();
}
Hàm này được đặt làm hàm đầu tiên trong bootstrap.php, bởi vì các phiên được bắt đầu, khi bạn xây dựng một đối tượng Zend_Session_Namespace lần đầu tiên. Nếu bạn làm điều này, trước khi hàm _initSession () - được gọi, một phiên dựa trên tệp tiêu chuẩn có thể được bắt đầu.
Cuối cùng là session.sql:
DROP TABLE IF EXISTS `session`;
CREATE TABLE `session` (
`id` char(32) NOT NULL DEFAULT '',
`modified` int(11) DEFAULT NULL,
`lifetime` int(11) DEFAULT NULL,
`data` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ở đâu đó tôi đọc được rằng bảng phải là InnoDB.