数码资讯
解析PHP的会话过期设置
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
网上很多人给出的答案:在PHP的配置文件修改session.gc_maxlifetime。如果您想了解更多关于会议的回收机制,继续读。(本文环境php5.2)
概述:每个PHP请求有1 / 100的概率(默认)触发会话恢复。如果会话恢复时,它将检查 / / sess_ TMP文件。如果最后一次修改的时间超过了1440秒(gc_maxlifetime值),它将被删除,这意味着这些会话过期。
1怎么样。会话存在于服务器端(通常是带有PHP模块的Apache)
默认情况下,PHP会在/ tmp目录保存会话,和文件名是这样的:sess_01aab840166fd1dc253e3b4a3f0b8381.each文件对应一个会话(session)。
更多的 / / sess_01aab840166fd1dc253e3b4a3f0b8381 TMP
用户名|:9:江枫;行政|:1:0;
#变量名|型:长度:价值
这里的会话文件的删除表明对应会话无效。
2怎么样。会话存在于客户端(通常是浏览器)
在浏览器端,会议只需要保存会话ID(由服务器端生成的唯一ID)。有两种方法保存:在Cookie和URL。如果会话ID保存在cookie,你可以看到在浏览器中的cookie phpsesid变量。如果是通过URL,你可以看到形状像:
URL的索引。phpphpsesid = 01aab840166fd1dc253e3b4a3f0b8381。(这是用来控制在服务器端session.use_cookies使用)
三.在服务器端,PHP如何判断会话文件是否过期
If the last modification time now to more than gc_maxlifetime (the default is 1440 seconds), the session file is expired, the next time the recovery of session, if the file has not been changed, the session file will be deleted (session expired).
简单地说,如果我登录到一个站点,如果我不在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会话使用一个被动的恢复机制(垃圾收集)。过期的会话文件不会自己消失,但处理过期会话触发恢复。
概述:每个PHP请求有1 / 100的概率(默认)触发会话恢复。如果会话恢复时,它将检查 / / sess_ TMP文件。如果最后一次修改的时间超过了1440秒(gc_maxlifetime值),它将被删除,这意味着这些会话过期。
1怎么样。会话存在于服务器端(通常是带有PHP模块的Apache)
默认情况下,PHP会在/ tmp目录保存会话,和文件名是这样的:sess_01aab840166fd1dc253e3b4a3f0b8381.each文件对应一个会话(session)。
更多的 / / sess_01aab840166fd1dc253e3b4a3f0b8381 TMP
用户名|:9:江枫;行政|:1:0;
#变量名|型:长度:价值
这里的会话文件的删除表明对应会话无效。
2怎么样。会话存在于客户端(通常是浏览器)
在浏览器端,会议只需要保存会话ID(由服务器端生成的唯一ID)。有两种方法保存:在Cookie和URL。如果会话ID保存在cookie,你可以看到在浏览器中的cookie phpsesid变量。如果是通过URL,你可以看到形状像:
URL的索引。phpphpsesid = 01aab840166fd1dc253e3b4a3f0b8381。(这是用来控制在服务器端session.use_cookies使用)
三.在服务器端,PHP如何判断会话文件是否过期
If the last modification time now to more than gc_maxlifetime (the default is 1440 seconds), the session file is expired, the next time the recovery of session, if the file has not been changed, the session file will be deleted (session expired).
简单地说,如果我登录到一个站点,如果我不在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会话使用一个被动的恢复机制(垃圾收集)。过期的会话文件不会自己消失,但处理过期会话触发恢复。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。