php - php的垃圾回收能否删除启动脚本的session

标签 php session

假设我的 php.ini 文件中有这些设置(当然不是“正常”设置):

session.gc_maxlifetime = 60
session.gc_probability = 1
session.gc_divisor = 1

这意味着在每次 session 初始化时,垃圾收集将运行并清除所有早于一分钟的 session 。

假设只有一个用户连接到服务器并运行初始化 session 的脚本。如果他/她在 70 秒(或超过 60 秒)后再次运行它,他/她自己的 session 是否会被删除?

换句话说,垃圾回收发生在脚本执行之前还是之后?

最佳答案

垃圾收集应该在运行脚本之前发生。这是正确的行为。我的意思是, session 应该在 gc_maxlifetime 之后的任何时刻过期。 PHP 应该在运行脚本之前进行垃圾收集,以确保其正常工作。

不过我很好奇,就尝试了一下,我的测试证实了我的推测。

这是一个简单的测试。使用给定的设置,我测试了存储在 session 中的变量在 X 秒后是否存在,但事实并非如此。所以垃圾收集是在运行脚本之前完成的。

注意:如果您使用 cookie,您还必须将 session cookie 生命周期设置为过期。

关于php - php的垃圾回收能否删除启动脚本的session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959512/

相关文章:

javascript - 来自 php 和 mysql 的 googlemaps 上的多个标记

php - 删除 MySQL 行

php - 无法通过 Laravel SQLSTATE [08006] [7] FATAL 连接到 PgSQL

java - SessionAttributes 导致多个选项卡出现问题

Java:跟踪用户登录 session - session EJB 与 HTTPSession

php - 在 Windows 上用 PHP 计算文件行数

php - 一个 div 在 HTML/PHP 更改后不响应 CSS

php - 匹配数组中的字符串 strpos() : Empty needle

python - 重新生成所有 flask session 而不注销用户

Java - Servlet,在整个项目中携带登录信息( session bean)