返回首页
当前位置: 主页 > yabo88app应用 >

PHP中会话过期时间设置和会话恢复机制介绍

时间:2018-12-01 19:11
   网上很多人给出的答案:在yabo88app文件中修改session.gc_maxlifetime。如果你想了解更多关于会议的回收机制,继续读。(本文环境php5.2)

概述:每个PHP请求有1 / 100的概率(默认)触发会话恢复。如果会话恢复时,它将检查 / / sess_ TMP文件。如果最后一次修改的时间超过了1440秒(gc_maxlifetime值),它将被删除,这意味着这些会话过期。

1怎么样。会话存在于结束(一般使用PHP模块)

默认情况下,PHP会在/ tmp目录保存会话,和文件名是这样的:sess_01aab840166fd1dc253e3b4a3f0b8381.each文件对应一个会话(session)。
More /tmp/sess_01aab840166fd1dc253e3b4a3f0b8381
用户名|:9:江枫;行政|:1:0;
#变量名|型:长度:价值

这里的会话文件的删除表明对应会话无效。

2怎么样。会话存在于客户端(通常是浏览器)

在浏览器端,会议只需要保存会话ID(由服务器端生成的唯一ID)。有两种方法保存:在Cookie和URL。如果会话ID保存在cookie,你可以看到在浏览器中的cookie phpsesid变量。如果是通过URL,你可以看到形状像:
URL的索引。phpphpsesid = 01aab840166fd1dc253e3b4a3f0b8381。(这是用来控制在服务器端session.use_cookies使用)

三.在服务器端,PHP如何判断会话文件是否过期

如果最后修改时间到现在超过gc_maxlifetime(默认是1440秒),会话文件过期了,下次会话恢复,如果文件没有被更改,会议文件将被删除(会话过期)。

简单地说,如果我登录到一个站点,如果我不在1440秒钟内完成(默认),那么相应的会话就要过期了。

因此,在php.ini文件中修改gc_maxlifetime变量可以延长会话过期时间:(例如,改变我们的过期时间为86400秒)。
session.gc_maxlifetime = 86400

然后,重新启动Web服务(通常是Apache)。

注:在PHP5会话过期使用恢复机制。时间在这里设置为86400秒,如果会议没有在86400秒内改性,它真的是从下一个恢复删除。

3点钟什么时候。会话恢复发生了吗

默认情况下,每个PHP请求都有1/100恢复的概率,所以可以简单地理解,每100个PHP请求发生一次恢复,这个概率由以下参数控制
#概率gc_probability / gc_divisor
session.gc_probability = 1
session.gc_divisor = 100

注1:假设这种情况下,gc_maxlifetime = 120,如果一个会话文件的最后修改时间是120秒,那么会话仍然有效,直到下一次复苏(1 / 100的概率)发生。

注2:如果你的会话使用session.save_path保存会话的其他地方,会话恢复机制可能不会自动处理过期的会话文件。然后需要人工定时(或crontab)删除过期的会话:CD /路径/ /次;发现| xargs rm Cmin + 24

4。一些特殊情况

因为回收机制将检查文件的最后修改时间,所以如果一个会话活动,但会议内容没有变化,那么相应的会话文件不改变,恢复机制会认为这是一个不活动的会话时间长,去除它。这是我们不希望看到的,和您可以通过添加以下代码解决这个问题:
复制代码代码如下所示:
60)_session美元{ 'last_access} =时间();>

代码将尝试每隔60秒修改一次会话。

总结:如果你想修改会话过期时间,改变php5的变量gc_maxlifetime.the会话使用一个被动的恢复机制(垃圾收集)。过期的会话文件不会自己消失,但处理过期会话触发恢复。
------分隔线----------------------------
推荐内容