每个用户多久更改一次PHP会话ID?

时间:2014-10-16 16:03:03

标签: php session

只是一个基本问题,如果您在用户访问主页面时打开会话并存储会话ID。该用户何时返回说另一天/时间并且ID不同?

1 个答案:

答案 0 :(得分:1)

这取决于PHP的配置方式。特别是这些设置控制垃圾收集器“擦除”php会话ID的频率:

http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

  

session.gc_maxlifetime指定之后的秒数   数据将被视为“垃圾”并可能被清理干净。垃圾   会话开始时可能会收集(取决于   session.gc_probability and session.gc_divisor)。

http://php.net/manual/en/session.configuration.php#ini.session.gc-divisor

  session.gc_divisor加上session.gc_probability定义了   gc(垃圾收集)过程开始的概率   每个会话初始化。概率通过使用来计算   gc_probability / gc_divisor,例如1/100意味着有1%的可能性   GC进程在每个请求时启动。 session.gc_divisor默认为   100。

http://php.net/manual/en/session.configuration.php#ini.session.gc-probability

  

session.gc_probability与session.gc_divisor一起使用   管理gc(垃圾收集)例程的概率   开始。默认为1.有关详细信息,请参阅session.gc_divisor。

据我所知,默认的php session.gc_maxlifetime是1440秒(24分钟)。您在网站中访问次数越多,这些统计信息的“最准确”就越多,因为所有这些算法都会更频繁地运行。

一个棘手的边缘案例:如果你启动一个会话,然后永远不会访问你的网站,垃圾收集器算法永远不会运行,因此会话永远不会过期!如果你能理解这一点,我想你已经理解了这个答案。