我在codeigniter上打开了memcached。它工作得很好,但我注意到脚本执行有一些延迟。我调试了Session_memcached_driver,发现它在第330-336行停留了几秒钟
do
{
if ($this->_memcached->get($lock_key))
{
sleep(1);
continue;
}
if ( ! $this->_memcached->set($lock_key, time(), 300))
{
log_message('error', 'Session: Error while trying to obtain lock for '.$this->_key_prefix.$session_id);
return FALSE;
}
$this->_lock_key = $lock_key;
break;
}
while (++$attempt < 30);显然,它在等待发布,这需要几秒钟(5-7秒)。也许我没有关闭一些我应该关闭的东西,或者以错误的方式使用CI会话机制?PHP 7、Linux、CI 3.1.4
发布于 2018-10-30 22:47:53
我也有同样的问题。延迟是由touch()命令引起的。如果您查看驱动程序行109:
$this->_memcached->setOption(Memcached::OPT_BINARY_PROTOCOL,为真);
暂时将其注释掉,看看它是否解决了问题。如果是,则需要更新服务器上的libmemcached。升级后,重新启动web服务器。
我有libmemcached 1.0.16,升级到1.0.18,如果你不升级,但只要注释掉这一行,会话时间将不会延长用户活动,并将更快地到期-如配置文件所定义。
祝好运!
https://stackoverflow.com/questions/49325852
复制相似问题