所以我遇到了一个持续存在于应用程序中的会话问题,即使用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时间值,而不是当前时间的偏移量。
PHP会话处理程序仅使用session.gc_maxlifetime作为会话密钥的到期时间,而不对其进行任何更改。
详细信息: http : //rcmachado.github.io/php/memcache/2014/07/23/php-memcached-gotchas.html (披露:我写的post)。