每次加载页面时,我都会运行 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/