PHP会话ID - SID有效多长时间?

时间:2013-04-08 08:55:51

标签: php session cookies timeout lifetime

理论上,如果PHP会话ID存储在生命周期为365天的cookie中,会话ID是否会在第365天恢复正确的会话数据,或者由于会话而导致相关会话数据超时/删除终身设置?

我可以/应该存储和使用会话ID多长时间?

3 个答案:

答案 0 :(得分:3)

理论上,只要你愿意,你就可以存储它,但是你会不必要地耗尽资源。默认值为20分钟,可以通过设置php.ini参数在session.gc_maxlifetime中进行调整。如果您需要将数据保留的时间超过该数据,则将其放入数据库而不是会话中是有意义的。

答案 1 :(得分:2)

  

理论上,如果PHP会话ID存储在具有365天生命周期的Cookie中,会话ID是否会在第365天恢复正确的会话,或者由于会话生存期设置,相关会话是否会超时?

cookie只存储将识别会话的会话ID。

如果存在与该id对应的会话文件,则会话将恢复 - 否则,将创建具有该id的新空会话。

session.gc_maxlifetime选项名称错误 - 实际上它是 minimal 生命周期。如果在上次访问会话文件后经过了这个时间跨度,则会话垃圾收集器允许从磁盘擦除该文件 - 但保证不会立即发生,因为垃圾收集器是随机调用的(每个请求的概率也可以配置)。

  

我可以/应该存储和使用会话ID多长时间?

只要你需要它......?

这取决于您要做什么,如何配置会话等等。

答案 2 :(得分:0)

会话ID的最后一个与session.gc_maxlifetime相同。检查php.iniphpinfo()以查看您的设置,默认值为1440秒(24分钟)。虽然如果您关闭浏览器并且不通过cookie或其他方式恢复会话ID,则会话仍然会关闭。