PHP中SESSION不过期、无效问题

最近在使用ThinkPHP框架写一个管理系统。

在本地测试中,发现SESSION不会过期,不起作用。

试过了百度中很多的方法都解决不了,然后自己研究了一下PHP中SESSION的过期机制。

首先来看几个参数,在php.ini 配置文件中


SESSION的垃圾回收是需要根据时间来确定是否过期,过期则进行清理

session.gc_maxlifetime = 1440  


那么问题来了,在测试过程中,即使把这个参数改为1,同样没有效果

下面再来看两个参数

session.gc_probability = 1

session.gc_divisor = 1000 


SESSION的回收的几率等于

 session.gc_probability / session.gc_divisor = 1/1000

在php的机制中,也就是有1/1000的几率触发检查session的线程。

根据当前系统时间减去session的最后修改时间,再根据session.gc_maxlifetime进行比较,如果超时则清除该session文件。


下面来修改一下该文件

把 session.gc_divisor = 1 将几率变为100%

同时把session.gc_maxlifetime = 5 将过期时间大大缩短


重启php服务,我使用两个浏览器访问做测试,

用chrome进行访问,生成session后,不再访问

再用firefox进行访问成新的session文件

5秒后(估计早就过期了)再看看chrome

SESSION的已经过期了,这说明回收效果已经实现了

=====================================================





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值