每个用户更改PHP会话ID的频率


How often does a PHP session ID change per user?

这只是一个基本问题,如果你在用户访问主页时打开一个会话,并存储会话id。用户什么时候会返回,比如改天/改天,id会不同?

这取决于PHP的配置方式。具体来说,这些设置控制垃圾收集器"擦除"php会话id的频率

http://php.net/manual/en/session.configuration.php#ini.session.gc-最大使用寿命

session.gc_maxlifetime指定在数据将被视为"垃圾",并可能被清除。垃圾收集可能在会话启动期间发生(取决于session.gc_probability和session.gc_visor)。

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

session.gc_visor与session.gc_probability结合定义gc(垃圾收集)进程启动的概率每次会话初始化。概率是通过使用gc_propobility/gc_divisor,例如1/100表示有1%的可能性GC过程开始于每个请求。session.gc_visor默认为100.

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

session.gc_probability与session.gc_visor结合使用管理gc(垃圾收集)例程已启动。默认值为1。有关详细信息,请参阅session.gc_visor。

据我所知,默认的phpsession.gc_maxlifetime是1440秒(24分钟)。你在网站上的访问量越多,这些统计数据就越"准确",因为所有这些算法都会更频繁地运行。

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