gpt4 book ai didi

Symfony 3.4 session 时间

转载 作者:行者123 更新时间:2023-12-01 22:25:01 24 4
gpt4 key购买 nike

在我的 Symfony 3.4 应用程序中,用户会在一段时间后自动注销。我想改变这种行为,让我的应用程序永远不会自动注销。仅当用户单击注销链接时,它才应注销 session 。

我已阅读文档并尝试设置 cookie_lifetime 但它对我不起作用。如果有人从事该领域的工作,请建议如何继续。

更新:

我正在使用此文档页面 http://symfony.com/doc/master/components/http_foundation/session_configuration.html#session-lifetime

我正在使用基于 Symfony 3.4 flex 的项目。

我正在 config/packages/framework.yml 中设置配置。配置如下:

framework:
session:
handler_id: ~
cookie_lifetime: 31536000
gc_maxlifetime: 31536000

最佳答案

经过长时间的调试,我发现以下配置告诉 Symfony 使用默认的 PHP 保存处理程序和默认的 session 文件路径。

framework:
session:
handler_id: ~

因此 Symfony session 文件存储在 /var/lib/php/sessions 目录中。在基于 Debian 的操作系统中,cron 作业每半小时删除一次 session 文件。此 cron 作业根据与 apache2 关联的 PID 识别事件 session ,并仅更新这些事件 session 文件的上次访问时间和上次修改时间。

然后,同一个 cron 作业正在删除上次修改时间早于 gc_maxlifetime 的 session 文件,即:非事件 session 。主要问题是gc_maxlifetime仅根据php.ini文件确定,而没有考虑Symfony的.yaml文件。因此,Symfony 的 .yaml 文件中的配置将被忽略,并使用 PHP 的 gc_maxlifetime

这使得 session 文件在 20 分钟到 30 分钟后被删除。为了解决这个问题,我更新了 .yaml 配置,如下所示:

framework:
session:
handler_id: session.handler.native_file
save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
cookie_lifetime: 31536000
gc_maxlifetime: 31536000

现在 session 文件不存储在默认的 /var/lib/php/sessions 目录中,因此 cron 作业不会删除 session 文件。现在 Symfony 正在处理这个 session 处理工作,并且现在工作得很好。

关于Symfony 3.4 session 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com