这是我的测试代码:
$host = 'localhost';
$port = '11211';
if (extension_loaded('memcached')) {
$mc = new Memcached;
$mc->addServer($host, $port);
if ($mc->set('test', 'TEST')) {
echo 'true';
} else {
echo $mc->getResultCode();
echo $mc->getResultMessage();
}
} else {
echo 'no_memcached';
}
输出为:
47 服务器已发生故障并被禁用,直至定时重试
SELinux 已禁用,我也尝试在 nginx.conf 中关闭tcp_nodelay
并尝试了不同类型的主机(127.0.0.1 和 localhost)和端口。
我读过这个问题 -如何调试 memcached“服务器已失败且已禁用直至定时重试”错误?
但没有任何帮助,我无法发表评论,因为我的积分不够。
答案1
它无法运行的原因可能有很多种。
就我而言,我意识到 memcached 服务未在 docker 容器中启动。
因此,首先 - 检查 memcached 是否正常工作并检查其日志。尝试连接到 memcached(在默认位置)
telnet localhost 11211
答案2
解决方案很简单。
Memcached 是作为 PHP 模块安装的,而不是作为 Debian 扩展安装的。
要安装它,只需运行两个命令:
sudo apt update
sudo apt install memcached
完成。现在一切正常。