2012-03-21 63 views
2
session.save_handler = memcached 
session.save_path = "127.0.0.1:11211" 
session.gc_maxlifetime = 86400 

其余的标准。我希望自上次用户访问该页面以来,会话保持活动状态至少86400秒,即如果我在5分钟后开始会话并访问了页面,则会话仅在另一个86400秒后过期。PHP memcached会话将过期蓝色

但是,现在会话大约一小时后过期。我附上了phpMemcachedAdmin的屏幕截图。

enter image description here

回答

8

有可能适用的其他参数:

你的会话cookie可能月初到期。调用session_set_cookie_params(86400)将确保您的会话cookie存在与您的实际会话一样长。

此外,gc_maxlifetime为您的会话生存期设置了最大值。不要忘了,垃圾收集是由概率触发:http://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability

session.gc_divisor与session.gc_probability合定义了GC(垃圾回收)进程启动的每个会话初始化的概率。概率通过使用gc_probability/gc_divisor来计算,例如, 1/100意味着每次请求GC进程开始的概率为1%。 session.gc_divisor默认为100.

您也可以尝试检查/更改这些设置。

+0

我的配置覆盖'session_set_cookie_params'。但这只是部分回答了我的问题。据说,我设置了'session_set_cookie_params(60)'。为什么我的会话会在第一次加载后60秒过期,而不是最后一次调用后的60秒?有没有办法延长会议。 – Gajus 2012-03-21 22:18:08

+1

cookie的有效期仅在创建时设置。随后的任何呼叫都会延长您的会话(服务器端),但cookie将在60秒后消失。所以服务器端将仍然存在,但客户端将丢弃会话cookie并丢失会话ID。 – Tchoupi 2012-03-22 02:23:11

+0

如何延长Cookie到期时间以符合服务器时间? – Gajus 2012-03-22 07:08:28

0
; Document expires after n minutes. 
; http://php.net/session.cache-expire 
session.cache_expire = 1440 

如果您使用memcached会话处理程序,则此设置可能会受到影响。

+0

“这只会改变HTTP缓存过期时间” - http://php.net/manual/en/function.session-cache-expire.php#81265 – 2016-09-04 14:18:20