PHP ini_set会话gc_maxlifetime不起作用 [英] PHP ini_set session gc_maxlifetime not working

查看:585
本文介绍了PHP ini_set会话gc_maxlifetime不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在PHP中设置gc_maxlifetime.

I am trying to set gc_maxlifetime in PHP.

这是"header.php"中的代码,我在每一页中都包含了它.

Here is the code in 'header.php', and I include it every page.

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

我用

echo ini_get('session.gc_maxlifetime');

,并且确实设置为1.

但是它仍然保持登录状态,也就是说,会话被删除.

But it still keep login status, that is, session has not been deleted.

可能的原因是什么?

推荐答案

为什么不运行垃圾回收?

Why doesn't Garbage Collection run?

GC并非总是在每个请求上运行,默认的PHP设置是有1%的机会运行GC. session.gc_probability(默认1)/session.gc_divisor(默认100)= 0.01(1%几率)

GC does not always run on every request, default PHP settings is that it is 1% chance to run GC. session.gc_probability (default 1) / session.gc_divisor (default 100) = 0.01 (1% chance)

相关手册条目: http://php.net/manual/zh-CN/session.configuration.php#ini.session.gc-概率

我的建议是存储上次触摸会话的时间,并在每次页面加载时检查该值,如果经过了足够的时间,请session_destroy并将用户重定向到登录页面.

My suggestion is to store last time a session was touched and check against that value on every page load and if enough time has passed, session_destroy and redirect user to login page.

这篇关于PHP ini_set会话gc_maxlifetime不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆