php - Symfony2,在数据库中配置 pdo session 存储

标签 php session symfony pdo

对于我的 Symfony2 项目,我正在使用数据库中的 session 存储。

所以,我这样配置我的 config.yml :

framework:
    session:
        handler_id:     session.handler.pdo

parameters:
    pdo.db_options:
        db_table:    session
        db_id_col:   session_id
        db_data_col: session_value
        db_time_col: session_time

services:
    pdo:
        class: PDO
        arguments:
            - "pgsql:host=%database_host%;dbname=%database_name%"
            - "%database_user%"
            - "%database_password%"
        calls:
            - [setAttribute, [3, 2]]

    session.handler.pdo:
        class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
        arguments: ["@pdo", "%pdo.db_options%"]

一切正常,当我登录时,会在我的数据库中创建一个条目并且 session 工作正常。

但是,当 session 在数据库中时,我如何定义 session 的生命周期?如果我的应用程序中只有 4 个成员,为什么我的 session 表中有很多行 (+50)?

我该如何配置它?当成员(member)登录时,我只需要一个 session 。

最佳答案

您可以通过更频繁地运行 session 垃圾收集器来减少 session 表中的行数。

http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability

在你的 php.ini 文件中

session.gc_probability=1

session.gc_divisor=1

session.gc_maxlifetime=36000

这些设置将以 100% 的概率运行垃圾收集器,建议将其用于生产,但您应该能够验证它是否有效并根据需要调整设置。

关于php - Symfony2,在数据库中配置 pdo session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785275/

相关文章:

php - $this->Agreements->save() - 只创建一条记录,为什么?

javascript - 链接 CSS 时页面崩溃

php - Symfony2 : Change choices with ajax and validation

php - 处理在 MySQL 中存储为 JSON 对象的数据

javascript - onclick 不适用于输入类型=按钮

zend-framework - Zend Framework应用程序 session 资源和 Bootstrap ,出了什么问题?

javascript - session 存储可以安全吗?

c# - 设置最大 session 超时时间有什么缺点或限制吗?

Symfony 表格 : options not working

javascript - 对于 Ajax 请求,我的函数应该通过 .fail() 回调返回什么?