3

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

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

4

3 回答 3

3

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

于 2013-04-08T08:59:40.807 回答
2

从理论上讲,如果 PHP Session ID 存储在 Cookie 中,其生命周期为 365 天,那么 Session ID 会在第 365 天恢复正确的会话,还是相关 Session 会由于 Session 生命周期设置而超时?

cookie 仅存储将标识会话的会话 ID。

如果存在对应于该 id 的会话文件,则会话将被恢复——否则,将创建一个具有该 id 的新空会话。

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

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

只要你需要它……?

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

于 2013-04-08T09:02:23.447 回答
0

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

于 2013-04-08T08:59:42.923 回答