session.gc_maxlifetime不适合我

Bha*_*mar 0 php

我想将会话超时限制设置为3分钟,

我在页面中使用过这个

ini_set("session.gc_maxlifetime","50"); 不工作

解决方案

if(isset($ _ SESSION ['LAST_ACTIVITY'])&&(time() - $ _SESSION ['LAST_ACTIVITY']> 1800)){//最后一次请求超过30分钟前session_destroy(); //销毁session_unset()中的会话数据; //为运行时取消设置$ _SESSION变量} $ _SESSION ['LAST_ACTIVITY'] = time(); //更新上次活动时间戳

Dav*_*ann 9

三个变量用于定义PHP会话变量的垃圾收集行为:

  1. session.gc_maxlifetime是会话文件的生命周期(以秒为单位)(默认值:1440 = 24分钟)
  2. session.gc_probability是执行垃圾收集器概率的提名者(默认值= 1)
  3. session.gc_divisor是执行垃圾收集器概率的分母(默认值= 100或1000)

分子和分母一起用于确定概率(分母/分母).因此,当session.gc_probability为1且session.gc_divisor为100时,这是1/100 = 1%.因此每个页面的1%访问(=每个session_start调用)执行垃圾收集器.

如果要测试会话的过期方式,则需要将session.gc_probability和session.gc_divisor设置为1,这样每次访问页面都会导致垃圾收集器运行.此外,您需要使用两种不同的浏览器进行测试.当您使用第二个浏览器访问页面时(第一个浏览器的会话超时),第一个浏览器的会话将被清除.在我的测试中,当您只使用一个浏览器时,会话会自动扩展,尽管它已过时.