这不是session_set_cookie_params或session.gc_maxlifetime的普通问题。我挖谷歌,我一无所知。
这种情况非常普遍和平常:我希望用户会话能够继续工作,只要“点击次数”之间的时间少于十分钟,即使他们保持工作数小时。
我在每个请求中做的事情如下:
session_name('session_cookie_name');
session_set_cookie_params(600, '/'); // 600 is how much seconds in a ten minutes.
session_cache_limiter(FALSE);
session_start();
我期待上面提到的结果,因为session.gc_maxlifetime被设置为默认值1440
编辑:
我得到的是,每600秒我就会得到一个没有数据的新会话 从普遍的要求中拯救出来。
用于实现这一目标的惯例是什么?
答案 0 :(得分:3)
嗯,您当前的解决方案无法保证在定义过去10分钟后GC会严格收集会话。
更好的解决方案是使用默认会话生命周期(20分钟或更长时间)并手动处理点击之间的超时。
只需存储$_SESSION['last_click_time'] = time();
并进行比较。如果超过600秒 - 执行您所需的操作:刷新会话,注销用户,创建日志记录,向某人发送电子邮件等。
答案 1 :(得分:3)
使用setcookie
,使用与session_start设置的PHP相同的参数设置cookie:
PHPSESSID
)session_id()
time() + $lifetime
)$_SERVER['HTTP_HOST']
)答案 2 :(得分:0)
$cur_time = time();
if($cur_time > $_SESSION['timeout']){
//destroy the session (reset)
session_destroy();
}else{
//set new time
$_SESSION['timeout'] = time() + 600;
}
这就是我要做的。