Memcache+PHP会话调优:Memcache如何过期键


Memcache+PHP session tuning: How does memcache expire keys?

更新,2011年10月24日:我把这个移到ServerFault,这可能更合适,这就是我打算在第一时间发布这个的地方。然而,我找不到"move to SF"选项,所以我只是复制了它。有人能帮我搬一下吗?

我对此做了一些研究,但还没有找到一个明确的答案。

我们有一个使用PHP+Memcache会话处理程序的web应用程序。

我有几个问题,所有相关的,但最终我的问题是,"为什么PHP会话显然没有到期,当我们认为他们应该?"即最终用户应该在一段时间后退出应用程序,但不是。

这些是点,请帮我把它们连起来,并告诉我哪里错了:

  • 我的理解是Memcache根据设置的时间过期密钥,以秒为单位(或unix时间戳为较大的值)。
  • 过期是惰性的——即没有任何内容被提前删除
  • PHP memecache会话处理程序使用会话。Gc_max_lifetime设置memcache key的过期时间。我想,也许不是这样?
  • Memcache应该,在服务请求的键并看到它过期时,不服务它(然后可能也删除它?)。但至少不上菜。
  • 对于PHP来说,这种不服务的行为应该等同于删除会话和用户被注销。

用户未被注销。

我怎么调试这个?Memcache不是完全透明的。

我应该指定没有正常工作的示例情况是一个会话超时设置为两个小时的站点。例如,用户最后一次使用该网站是在晚上,然后,8 - 10小时后,回到该网站,仍然登录。

终端用户应该在最后一次向服务器发出请求后一段时间退出应用程序。每当客户端发出请求时,他的过期时间就会重置。如果过期时间为3分钟,并且您每2分钟发出一次请求,那么您的会话将永远不会过期。