3 回答
TA贡献1872条经验 获得超3个赞
通常,您可以说session.gc_maxlifetime指定自上次更改会话数据(而不是上次session_start调用!)以来的最长生存时间。但是PHP的会话处理有点复杂。
因为会话数据由垃圾收集器,其仅由称为除去session_start用的概率session.gc_probability合由devided session.gc_divisor。默认值为1和100,因此垃圾收集器仅在所有session_start调用的1%中启动。这意味着,即使会话在理论上已经超时(会话数据更改的时间超过了几秒钟前的session.gc_maxlifetime),会话数据的使用时间也可以更长。
因此,我建议您实施自己的会话超时机制。请参阅我的答案,如何在30分钟后使PHP会话到期?更多细节。
TA贡献1848条经验 获得超6个赞
如果session.cookie_lifetime为0,则会话cookie一直存在,直到退出浏览器。
编辑:其他人提到了session.gc_maxlifetime设置。发生会话垃圾收集时,垃圾收集器将删除超过session.gc_maxlifetime几秒钟未访问的所有会话数据。要设置会话cookie的生存时间,请调用session_set_cookie_params()或定义session.cookie_lifetimePHP设置。如果此设置大于 session.gc_maxlifetime,则应将其增加到session.gc_maxlifetime大于或等于Cookie生存期的值,以确保会话不会过期。
- 3 回答
- 0 关注
- 507 浏览
添加回答
举报