nitecon / zf2-db-session
Zend Framework 2 数据库会话存储
1.0.5
2013-10-07 18:24 UTC
Requires
- php: >=5.3.3
- zendframework/zendframework: 2.*
This package is not auto-updated.
Last update: 2024-09-14 12:19:57 UTC
README
用于在数据库中存储会话的Zend Framework模块。
特性
- 轻松将会话存储到数据库中的模块
- 使用 Laminas\Session\SaveHandler\DbTableGateway
- 使用您已有的数据库配置
- 提供可配置的会话选项
设置
以下步骤是使此模块工作所必需的
- 运行
php composer.phar require nitecon/zf2-db-session:1.*
- 将
DBSessionStorage
添加到启用模块列表中 - 使用以下命令将会话表添加到您的数据库中
CREATE TABLE IF NOT EXISTS
sessions
(id
char(32) NOT NULL DEFAULT '',name
varchar(255) NOT NULL,modified
int(11) DEFAULT NULL,lifetime
int(11) DEFAULT NULL,data
text, PRIMARY KEY (id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - 将
vendor/nitecon/zf2-db-session/dbsession.global.php.dist
复制到config/autoload/dbsession.global.php
- 在
config/autoload/dbsession.global.php
中配置会话选项
附加信息
此模块假定您已经有一个顶级 db 键在您的配置中,如下所示
return array( 'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=somedb;host=localhost', 'username' => 'sessionuser', 'password' => 'sessionpass', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'', 'buffer_results' => true ), ), /* Rest of your config */ );
如果您没有此配置,请确保根据您的数据库详细信息添加它,并且始终记得在local.php文件中放入您的用户名和密码详细信息,以便它不会被添加到您使用的版本控制系统。
注意事项和错误
如果您看到类似“Laminas\Session\SessionManager 'Insufficient data for unserializing'”的错误,这意味着插入数据库的数据大于该列允许的大小。
要解决这个问题,请将数据库中的'data'列从'text'调整为'blob'。在我的某些应用程序中,存储了大量的会话数据,我发现它们通常有大约1.5kb的大小,这会产生此错误。
最后说明
请注意,上述驱动程序不一定是Pdo,可以是Zend Adapter支持的一切,但它只与Pdo / Mysqli驱动程序进行了测试。
我还计划为那些感兴趣的人添加一个基于doctrine的数据库接口的另一个模块。
祝您玩得开心,如果您发现错误或问题,请为此模块添加pull requests。