nitecon/zf2-db-session

Zend Framework 2 数据库会话存储

1.0.5 2013-10-07 18:24 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:19:57 UTC


README

用于在数据库中存储会话的Zend Framework模块。

特性

  • 轻松将会话存储到数据库中的模块
  • 使用 Laminas\Session\SaveHandler\DbTableGateway
  • 使用您已有的数据库配置
  • 提供可配置的会话选项

设置

以下步骤是使此模块工作所必需的

  1. 运行 php composer.phar require nitecon/zf2-db-session:1.*
  2. DBSessionStorage 添加到启用模块列表中
  3. 使用以下命令将会话表添加到您的数据库中
    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;
    
  4. vendor/nitecon/zf2-db-session/dbsession.global.php.dist 复制到 config/autoload/dbsession.global.php
  5. 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。