Memcache + PHP会话调优:memcache如何过期密钥?

时间:2011-10-20 22:22:03

标签: php session memcached

更新,24OCT2011:我把它移到了ServerFault,这可能更合适,这也是我打算在第一时间发布的地方。但是,我找不到“转移到SF”选项,所以我只是将它复制到那里。任何人都可以帮助实际移动它吗?

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

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

我有几个问题,都是相互关联的,但最终我的问题是,“为什么PHP会话显然没有在我们认为应该到期时到期?”即最终用户应在设定的时间后退出应用程序,但不是。

以下是点,请帮我联系,告诉我哪里弄错了:

  • 我的理解是,Memcache会根据设置的时间(以秒为单位)来过期密钥(或者更大值的unix时间戳)。
  • 过期是懒惰的 - 即没有提前删除
  • PHP memecache会话处理程序使用sessions.gc_max_lifetime设置memcache密钥到期。 idk,也许不是吗?
  • Memcache应该在提供请求的密钥并看到它已过期时,不提供服务(然后也可能删除它?)。但至少不服务它。
  • 对于PHP,这不服务的行为应该等同于删除的会话和用户正在注销。

用户未被注销。

我怎么能调试这个? Memcache并不完全透明。

更新 我应该指定一个没有工作的示例案例是会话超时设置为两小时的站点。一个示例用户将在晚上使用该网站,然后,8-10个小时后,返回该网站仍然登录。

1 个答案:

答案 0 :(得分:0)

最终用户应在他们上次向服务器发出请求后的设定时间中退出应用。每次客户提出请求时,他的到期都会重置。如果到期时间为3分钟,并且您每2分钟发出一次请求,那么您的会话将永不过期。