zend:使用multidb时在数据库中存储会话

时间:2012-06-05 12:12:10

标签: php zend-framework

我的zend应用程序使用多个数据库连接,因此我使用multidb资源在application.ini文件中配置多个连接。

现在我想使用Zend_Session_SaveHandler_DbTable将应用程序会话存储到数据库中,但是我找不到一种方法来指定使用哪些连接来访问数据库。

我在网上找到的每个示例都使用db资源,并依赖于默认的数据库适配器。不幸的是,会话必须存储在一个不是默认数据库的数据库中......

如何指定用于存储会话的数据库?

1 个答案:

答案 0 :(得分:3)

虽然Zend文档中没有指定,但Zend_Session_SaveHandler_DbTable类的构造函数接受名为db的参数,该参数指定要使用的数据库连接。

$db = $this->getPluginResource('multidb')->getDb('zend');
$config = array(
    'db'             => $db,
    'name'           => 'session',
    'primary'        => 'id',
    'modifiedColumn' => 'modified',
    'dataColumn'     => 'data',
    'lifetimeColumn' => 'lifetime'
);
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
Zend_Session::start();

我无法在application.ini配置文件中指定这些设置,但是......