我正在尝试使用 DbTableGateway 将我的会话信息存储在 MySQL 数据库中——但我的“会话”表仍然是空的。它从不包含任何行。这是我的代码(或多或少从这里复制/粘贴):
$dbAdapter = new Zend\Db\Adapter\Adapter(array(
'driver' => 'pdo_mysql',
'database' => 'db-name',
'username' => 'username',
'password' => 'password!'
));
$tableGateway = new \Zend\Db\TableGateway\TableGateway('session', $dbAdapter);
$saveHandler = new \Zend\Session\SaveHandler\DbTableGateway($tableGateway, new \Zend\Session\SaveHandler\DbTableGatewayOptions());
$manager = new \Zend\Session\SessionManager();
$manager->setSaveHandler($saveHandler);
$someContainer = new Container('SomeSessionNamespace');
$someContainer->aBitOfData = 'tasty morsel of data';
这是我使用此代码的视频演示:http: //screencast.com/t/UDDUs6OZOib
正如您在视频中看到的,会话信息在请求之间保留,但并未存储在数据库中。
我在 中的每个函数都添加了断点Zend\Session\SaveHandler\DbTableGateway
,唯一受到影响的是 __constructor。所以构造函数被调用,但显然它永远不会被用于其他任何事情。
我错过了什么?
我在 PHP 5.3 上使用 Zend Framework 2.2.2。
-乔什