Php Symfony2,在数据库中配置pdo会话存储

Php Symfony2,在数据库中配置pdo会话存储,php,session,symfony,pdo,Php,Session,Symfony,Pdo,对于我的Symfony2项目,我正在数据库中使用会话存储 因此,我将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

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

因此,我将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%"]
一切正常,当我登录时,在我的数据库中创建了一个条目,会话工作正常

但是,当会话在数据库中时,如何定义会话的生存期?如果我的申请表上只有4个成员,为什么我的会话表中有很多行(+50)


我如何配置它?当成员登录时,我只需要一个会话。

我认为行数不是由会话生存期决定的,至少不是完全决定的

产生如此多行的主要原因是防止会话劫持。因此,如果您关闭浏览器并返回您的网站,则会话不仅仅被视为理所当然,而是被重新生成

您是否使用
FOSUserBundle
进行身份验证?我确信它支持会话劫持保护的配置

编辑:

chrsva
在这里提到:

通过更频繁地运行会话垃圾收集器,可以减少会话表中的行数

在php.ini文件中

session.gc_概率=1

session.gc_除数=1

session.gc_maxlifetime=36000


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

是的,我使用的是FOSUser。我没有一个网站,我有一个phonegap应用程序,网站什么只是我通用的方式说网络应用程序:)那么,我能做什么呢?没有什么?如果我在两个月内为10名会员排了8000行?哇,太多了!我试图在Symfony2中找到一些关于会话再生的参考资料(我知道我以前见过它)。找到问题后立即更新;)好的,我想我找到了。。。更新了答案。事实证明,它与FOSUserBundle本身无关,而是与
安全性相关:)找到解决方案了吗?我在数据库中有太多的旧会话:(我认为我接受的anwser是一个好方法。)但我真的不知道它是否有效^^