设置session的过期时间php,关于php中设置session过期时间的问题

关于php的session文件垃圾回收机制。我已经在网上看了不少资料。大致是说session过期并不会马上清除session文件,而是每次有请求过来的时候根据session.gc_probability/session.gc_divisor的值为概率去遍历以便session目录下的session文件看是否存在过期的session文件,如果过期则清楚。

看完这些资料起初并没有什么疑问。但是想说实践出真知于是就自己动手试试看是不是这样子的。

首先我建立了一个文件test.php:

ini_set('session.gc_maxlifetime','1');

session_start();

$_SESSION['uid']="123";

还有另外一个文件tt.php:

session_start();

echo $_SESSION["uid"];

php.ini中:(后面测试中这个文件的内容都一样)

session.gc_probability = 1

session.gc_divisor = 100

先请求test.php然后隔5秒再请求test.php。结果显示123。这说明session数据并没有被清除掉

再来一种情况:

test.php:

ini_set('session.gc_maxlifetime','1');

session_start();

$_SESSION['uid']="123";

php.ini中:

session.gc_probability = 1

session.gc_divisor = 1

先请求test.php然后隔5秒再请求test.php。结果显示123。这说明session数据并没有被清除掉

然后再来测试一下:

test.php:

ini_set('session.gc_maxlifetime','1');

session_cache_expire(1);

session_start();

php.ini中:

session.gc_probability = 1

session.gc_divisor = 1

先请求test.php然后隔5秒再请求test.php。结果显示123。还是没有清理掉,我还以为可以了呢。看来再瞎测下去也不是办法,如果能找到session文件所在磁盘位置再来测试效果会好一些。终于让我找到了,我的php.ini里面的session.save_path是注释掉的。所以它会默认存到个人的临时目录文件夹下C:\Documents and Settings\syx\Local Settings\Temp

看了一下果

主要Session在PHP.ini里的配置项如下:

session.gc_probabilityintegersession.gc_probability 与 session.gc_divisor 合起来用来管理 gc(garbage collection 垃圾回收)进程启动的概率。默认为 1。详见 session.gc_divisor。 session.gc_divisorintegersession.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。session.gc_divisor默认为 100。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值