You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony数据库存储的会话时长仅24分钟,配置后不生效如何解决?

你当前的配置只设置了客户端会话Cookie的有效期,没有调整服务端会话的最大存活周期,Symfony服务端默认的会话垃圾回收阈值为1440秒即24分钟,超过这个时长的会话会被服务端判定为无效并清理,这就是你会话仅24分钟失效的核心原因。

1. 调整framework.yaml的session配置

在原有session配置下追加服务端垃圾回收相关参数:

session:
    enabled: true
    handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
    cookie_secure: 'auto'
    cookie_samesite: 'lax'
    cookie_lifetime: 604800
    # 新增以下配置
    gc_maxlifetime: 604800 # 服务端会话最大有效期,和Cookie有效期保持一致为1周
    gc_probability: 1
    gc_divisor: 100 # 每100次请求触发1次过期会话清理,可根据站点访问量自行调整

2. (可选)给PdoSessionHandler显式指定过期参数

为避免服务器PHP全局配置php.ini中的session.gc_maxlifetime参数覆盖项目配置,可在services.yaml中给PdoSessionHandler追加配置参数:

services:
    Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler:
        arguments:
            - '%env(DATABASE_URL)%'
            - { gc_maxlifetime: 604800 }

3. 生效配置

修改完成后执行Symfony缓存清理命令让配置生效:
php bin/console cache:clear

注意:修改前已生成的旧会话仍会按照原有规则过期,新生成的会话才会应用新的生命周期配置。

内容的提问来源于stack exchange,提问作者UXerUIer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:00:04