我在下面有testMemcached.php代码。
<?php
include_once "common.php";
include_once "api.php";
class TestMemcached extends API{
function impl(){
$m = $this->getMem();
$stats = $m->getStats();
var_dump($stats);
$m->add("Key","test");
echo "Value:".$m->get("Key");
}
}
$api = new TestMemcached();
$api->go();
我在网络浏览器中运行testMemcached.php。我得到bool(false) Value:
。
我运行php -f testMemcached.php
命令然后得到下面的输出。
array(1) {
["localhost:11211"]=>
array(24) {
["pid"]=>
int(10218)
....(skip)
["version"]=>
string(6) "1.4.15"
}
}
Value:test
我不知道区别是什么 如何修复memcached在Web浏览器中无法正常工作。
我的环境:CentOS 7. LNMP。
2018/05/23更新:
我使用telnet 127.0.0.1 11211
来测试memcached函数
我发现add
和set
无效。
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set test testValue
ERROR
add test testValue
ERROR
get test
END
我使用下面的getResultCode()
代码来查找错误
这是我的测试结果输出。
MemcachedFunction ResultCode ErrorDescription
stats 3 MEMCACHED_CONNECTION_FAILURE
set 3 MEMCACHED_CONNECTION_FAILURE
add 47 MEMCACHED_SERVER_TEMPORARILY_DISABLED
get 47 MEMCACHED_SERVER_TEMPORARILY_DISABLED
fetchAll 16 MEMCACHED_NOTFOUND
我的测试代码在这里。输出在评论中。
<?php
include_once 'vendor/autoload.php';
$m = new Memcached();
$m->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$m->addServer("localhost","11211");
$stats = $m->getStats();
echo "stats ".$m->getResultCode()."<br>"; // stats 3
var_dump($stats); // bool(false)
echo "<br>";
$m->set("Key","test");
echo "set ".$m->getResultCode()."<br>"; // set 3
$m->add("Key","test");
echo "add ".$m->getResultCode()."<br>"; // add 47
echo "Value:".$m->get("Key")."<br>"; // Value:
echo "get ".$m->getResultCode()."<br>"; // get 47
var_dump($m->fetchAll()); // bool(false)
echo "<br>";
echo "fetchAll ".$m->getResultCode()."<br>"; // fetchAll 16
var_dump($m->getAllKeys()); // bool(false)
答案 0 :(得分:1)
我曾经遇到过类似的小问题。 就我而言,使用ip地址代替“ localhost”是可行的。
$cache_server_host = '12*.45*.***.***';// Your server's ip address here.
$cache_server_port = 11211;
$cache_obj = NULL;
$is_cache_available = FALSE;
try {
if (class_exists('Memcache')) {
$cache_obj = new Memcache;
$is_cache_available = $cache_obj->connect($cache_server_host, $cache_server_port);
};
}
catch (Exception $e) {}
if (!empty($is_cache_available)) {
// Ok to use the cache;
// i.e.- $cache_obj->set($key, $val, ...);
}