PHP 会话 ID - SID 的有效期是多久? [复制]
Posted
技术标签:
【中文标题】PHP 会话 ID - SID 的有效期是多久? [复制]【英文标题】:PHP Session ID - how long is a SID valid? [duplicate] 【发布时间】:2013-03-30 07:03:20 【问题描述】:理论上,如果 php 会话 ID 存储在 cookie 中,其生命周期为 365 天,该会话 ID 是否会在第 365 天恢复正确的会话数据,或者相关会话数据是否会因会话而超时/删除生命周期设置?
我可以/应该存储和使用会话 ID 多长时间?
【问题讨论】:
直到浏览器关闭为止,除非您在会话中使用 cookie 见***.com/a/1270960/1163444 Cookie 生命周期(客户端)与会话生命周期(服务器端)不同。 【参考方案1】:理论上,您可以根据需要存储它,但您将不必要地消耗资源。默认为 20 分钟,可以通过设置session.gc_maxlifetime
参数在php.ini
中进行调整。如果您需要将数据保留更长的时间,则将其放入数据库而不是会话中是有意义的。
【讨论】:
【参考方案2】:理论上,如果 PHP Session ID 存储在 Cookie 中,其生命周期为 365 天,那么 Session ID 是否会在第 365 天恢复正确的会话,或者相关 Session 是否会由于 Session 生命周期设置而超时?
cookie 仅存储将识别会话的会话 ID。
如果存在与该 id 对应的会话文件,则会话将恢复 - 否则,将创建具有该 id 的新空会话。
session.gc_maxlifetime
选项命名错误——事实上它是一个最小生命周期。如果在最后一次访问会话文件之后已经过了这个时间跨度,则 允许 会话垃圾收集器从磁盘上擦除该文件 - 但不能保证这会立即发生,因为垃圾收集器是随机调用的(也可以配置每个请求的概率)。
我可以/应该存储和使用会话 ID 多长时间?
只要你需要……?
这取决于您要做什么、如何配置会话等。
【讨论】:
【参考方案3】:会话 ID 的最后一个与 session.gc_maxlifetime
相同。检查php.ini
或phpinfo()
以查看您的设置,默认为1440 秒(24 分钟)。虽然如果您关闭浏览器并且不通过 cookie 或其他方式恢复会话 ID,则会话仍然关闭。
【讨论】:
以上是关于PHP 会话 ID - SID 的有效期是多久? [复制]的主要内容,如果未能解决你的问题,请参考以下文章