设置: Apache ; PHP 5.2.9; libevent(对于 memcached 是必需的)版本 1.3; memcached服务器版本1.2.2(尝试过1.4.5、1.4.0,现在降级到1.2.2,没有区别); memcached php pecl 模块版本 2.2.6。
问题:
类似于 Unresolved 问题cannot store values into memcache和 Super strange PHP error
这些线程都没有解决问题,问题的作者也没有遵循给出的建议。我都照着做了,还是不行。
如果我通过 PHP 连接,Memcache
代码不会显示任何错误,但一旦我尝试执行任何命令(例如 getVersion
),我得到回复:
注意:memcache_get_version() [function.memcache-get-version]:服务器 127.0.0.1 (tcp 11211) 失败:无法从/var/www/html/memcache 中的流 (0) 读取行。 php 第 11 行
尝试的解决方案:
通过命令行连接到内存缓存不起作用。在我输入任何命令后,连接将关闭。
[/usr/local/src]$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
Connection closed by foreign host.
我尝试了 $ memcached -S
以确保 memcached 是在禁用 SASL 支持的情况下编译的。
响应:“此服务器未构建有 SASL 支持。”
此外,其中一条评论是
You may be running memcached without ASCII protocol support, such as if you ran:
$ memcached -B binary
If this is the case, remove the
-B
argument entirely, and PHP and telnet should work.
memcache 起始行是:
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211
其中没有 B 参数。
有什么想法吗?
最佳答案
谁可能会感兴趣。
问题已解决。
这就是问题所在(也许它可以帮助作者解决两个相关的问题)。
在共享主机上有时您不应该使用 127.0.0.1。相反,请使用站点的 IP 地址。
变化如此
memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211
到
memcached -d -m 1024 -u root -l 123.456.789.123 -p 11211
和 PHP 代码来自
$memcache->pconnect("127.0.0.1",11211);
至
$memcache->pconnect("123.456.789.123",11211);
解决了这个问题。
谢谢大家!
关于php - Memcache 连接但不响应任何命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045187/