php - session.gc_maxlifetime 什么时候开始计数

标签 php session

每次加载页面时,我都会运行 session_start() 以恢复当前 session 。 session.gc_maxlifetime 从什么时候开始计数?第一次调用 session_start() 并设置该 session 的 cookie?还是定时器会在每次 session_start() 时重新启动?

session.gc_maxlifetime 设置为大约 24 分钟,此时 session 数据应该被垃圾收集

 1. 12:00:00 First page load, session_start(), session cookie created
 2. 12:10:00 page load, session_start() 
 3. 12:26:00 page load, session_start()
 4. 12:55:00 page load, session_start()

如果计时器在第一个页面加载 session_start() 时启动,那么我希望它会在加载 3 时进行垃圾收集。但是如果它重置每个 session_start(),那么它直到加载 4 时才会收集。

我希望是后者,因为这样我就可以每隔几分钟做一次 javascript 心跳来调用运行 session_start() 的页面。

如果是前者,session.gc_maxlifetime 从创建 session cookie 开始计数 我需要销毁/重新创建或重新生成_id 来重置计数吗?

最佳答案

它来自最后一次 session_start() 调用或/和最后一次写入。我的猜测是后者,因为这会改变 PHP 垃圾收集器用来确定是否需要删除它的“最后修改”时间戳。在这种情况下,它从最后一个使用 session_start() 或通过调用 session_write_close() 在脚本中明确结束的脚本开始计数。

附言这将使“心跳”变得漂亮和简单(在一行中):http://prototypejs.org/api/ajax/periodicalUpdater

关于php - session.gc_maxlifetime 什么时候开始计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146198/

相关文章:

php - Laravel - 如何在进度条上设置消息

javascript - 是否可以从浏览器控制台更改 JS 变量值?

ruby - ROR 代码发送许多邮件

c# - 在 Controller 类之外使用 Session

node.js - 经过身份验证的用户的 Sails.js 单个实例

php - 提交给 OO-PHP Crud 的表单

javascript - 如何将 javascript var 插入 Twig 上的路径?

php - MYSQL/PHP/Postgis : Check if a coordinate is within the radius of another coordinate( little twist )

node.js - 使用 JWT 管理多个设备 Node js 的用户 session

session - 在 Tomcat 7 中通过 http header (cookie)禁用 jsessionid