Memcache连接但不响应任何命令

时间:2011-05-18 13:08:12

标签: php memcached ascii sasl

设置: 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 module 2.2.6版。

问题:

与未解决的问题类似cannot store values into memcacheSuper strange PHP error

这些线程都没有解决问题,并且没有一个问题的作者遵循给出的建议。我跟着他们一切,但它仍然不起作用。

如果我通过PHP连接,

Memcache代码不显示任何错误,但是当我尝试执行任何命令(例如getVersion)时,我得到响应:< / p>

Notice: memcache_get_version() [function.memcache-get-version]: Server 127.0.0.1 (tcp 11211) failed with: Failed reading line from stream (0) in /var/www/html/memcache.php on line 11

已尝试解决方案:

通过命令行连接到memcache不起作用。在我键入任何命令后,连接正在关闭。

[/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以确保在禁用SASL支持的情况下编译memcached。 响应:“此服务器不支持SASL。”

另外,其中一条评论是

  

您可能正在运行没有ASCII协议支持的memcached,例如运行:

 $ memcached -B binary
     

如果是这种情况,请完全删除-B参数,PHP和telnet应该可以正常工作。

memcache起始行是:

memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211

其中没有B参数。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

对谁来说可能很有趣。

问题已解决。

这就是问题所在(也许它可以帮助2个相关踏板的作者)。

在共享主机上,有时您不应使用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);

解决了这个问题。

谢谢大家!

答案 1 :(得分:0)

我会和你的系统sadmin谈谈。我认为可能涉及防火墙。