对于我的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%"]
当我使用帐户登录时,会话表中会创建一个新的ligne,正常。但是当我显示我的网站页面时没有任何内容(例如索引),也会创建一个新行。
所以,有4-5名成员,我已经在表格中有+80行会话......
我该怎么做?成员登录时我只需要一行。
答案 0 :(得分:2)
每次用户访问您的应用时,您都会获得一个新行,而不会使用任何Cookie。默认情况下,cookie是会话cookie,这意味着当您关闭它时它会被浏览器销毁。
但是数据库中的行不会被删除,因为您的服务器无意知道这一点。
所以这里有垃圾收集器......对于每个请求,服务器将清理旧会话(早于session.max_lifetime)的可能性很小。但是在类似Debian的系统上,概率设置为零,因为有一个cron任务负责处理它(参见https://github.com/symfony/symfony/issues/10349)
因此,您可能需要将session.gc_probability明确设置为: