我在PHP中创建一些备份CLI脚本,它使用Memcache类,但我有一个奇怪的问题......
当我在Memcache上附加多个服务器时,get()方法总是返回false,即使条目存在,但是当我只附加一个服务器时,其中放入了该条目,其值将被返回...
不起作用:
$mc = new Memcache();
$mc->addServer('localhost', 11211);
$mc->addServer('localhost', 11212);
$mc->addServer('localhost', 11213);
var_dump($mc->get('someKey')); //bool(false)
但这有效:
$mc = new Memcache();
$mc->addServer('localhost', 11211);
var_dump($mc->get('someKey')); //Outputs actual value
我再说一遍,我从命令行运行这个脚本。在将所有三个服务器都添加到连接池中的情况下,memcache中的条目也是使用Memcache类创建的。唯一不同的是,使用浏览器通过HTTP请求来保存缓存条目。
有什么想法吗?
答案 0 :(得分:0)
尝试运行此代码
<?php
error_reporting(E_ALL || E_NOTICE);
$mc = new Memcache();
$mc->addServer('localhost', 11211);
$mc->addServer('localhost', 11212);
$mc->addServer('localhost', 11213);
var_dump($mc->getExtendedStats());
var_dump($mc->get('someKey')); //bool(false)
?>
此外,您应该set()
使用与您get()
时完全相同的服务器池的密钥。