memcache php 到期时间,Memcache PHP会话调优:memcache如何过期密钥?

我们也遇到过这种情况,但我们已经设法深入研究并确切地解决了正在发生的事情.我们遇到的症状是memcache(在多个服务器上运行的内存分配相当大)开始逐出内容.这是不可取的,因为它可能对网站上的当前访问者产生不利影响.

通过监控网络流量,我们看到了从PHP到Memcache的消息,如下所示:

设置memc.sess.key.abcdabcdabcdabcdabcdabcd 0 0 1823数据…

这是导致问题的第二个零 – 这决定了memcache缓存项目的时间长度.通过将其设置为零,memcache永远不会使此项目到期.在您的情况下,这意味着用户可以在几小时后返回并继续访问您的网站.在我们的例子中,memcache正在填满并导致所需数据被驱逐.

我进一步挖掘,它归结为PHP memcached扩展.从1.0.2开始(我们正在运行),此代码如下:

sess_lifetime = zend_ini_long(ZEND_STRL("session.gc_maxlifetime"), 0);

if (sess_lifetime > 0) {

expiration = time(NULL) + sess_lifetime;

} else {

expiration = 0;

}

在此摘录中,它是ZEND_STRL(“session.gc_maxlifetime”),它没有返回预期值.这已被报告为PHP的错误,并且在https://bugs.php.net/bug.php?id=59641处描述了对memcached库的修复.

我已经部署了这个补丁,检查了网络流量,发现它确实按预期设置了到期时间.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值