memcache和memcached会话不会持久

所以我遇到了一个持续存在于应用程序中的会话问题,即使用memcached php驱动程序,而另一个现有的应用程序正在使用memcache驱动程序。

在服务器上,我看到都安装了

我也看到在PHPconfiguration注册保存处理程序包括memcache和memcached,但“session.save_handler”PHPconfiguration值设置为memcache

那会是会话不能在试图使用memcached驱动程序的应用程序中工作的原因吗? 或者应该这样做,因为memcached,虽然不是默认的,是一个注册保存处理程序。

我知道memcached守护进程和连接工作,因为我成功地通过使用memcached驱动程序保存caching

我如何解决这个问题,可能会在任何地方显示错误或日志?

检查您的session.gc_maxlifetime设置。 任何大于60 * 60 * 24 * 30的内容都会使memcache在PHP存储它之后就将会话密钥过期。

Memcache协议规定,大于60 * 60 * 24 * 30的任何数字将被视为绝对的unix时间,而不是从当前时间的偏移量:

一些命令涉及一个客户端向服务器发送某种到期时间(相对于一个项目或客户端请求的操作)。 在所有这些情况下,发送的实际值可以是Unix时间(自1970年1月1日以来的秒数,作为32位值)或从当前时间开始的秒数。 在后一种情况下,该秒数不得超过60 * 60 * 24 * 30(30天内的秒数); 如果客户端发送的号码大于此值,服务器将认为它是真实的Unix时间值,而不是当前时间的偏移量。

(请参阅https://github.com/memcached/memcached/blob/e31a591210311d0658a90a86f71563fa6d7b095c/doc/protocol.txt#L79

PHP会话处理程序仅使用session.gc_maxlifetime作为会话密钥的到期时间,而不对其进行任何更改。

详细信息: http : //rcmachado.github.io/php/memcache/2014/07/23/php-memcached-gotchas.html (披露:我写的post)。