Memcache连接但不响应任何命令

glu*_*lum 2 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模块版本2.2.6.

问题:

类似于未解决的问题无法将值存储到memcache超级奇怪的PHP错误中

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

Memcache如果我通过PHP连接,代码不显示任何错误,但是一旦我尝试执行任何命令(例如getVersion),我得到响应:

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.
Run Code Online (Sandbox Code Playgroud)

我试图$ memcached -S确保在禁用SASL支持的情况下编译memcached.响应:"此服务器不是使用SASL支持构建的."

此外,其中一条评论是

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

 $ memcached -B binary
Run Code Online (Sandbox Code Playgroud)

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

memcache起始行是:

memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211
Run Code Online (Sandbox Code Playgroud)

没有B论证.

有任何想法吗?

glu*_*lum 6

它可能是有趣的.

问题解决了.

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

在共享主机上,有时您不应该使用127.0.0.1.而是使用网站的IP地址.

如此变化

memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211
Run Code Online (Sandbox Code Playgroud)

memcached -d -m 1024 -u root -l 123.456.789.123 -p 11211
Run Code Online (Sandbox Code Playgroud)

和来自的PHP代码

$memcache->pconnect("127.0.0.1",11211);
Run Code Online (Sandbox Code Playgroud)

$memcache->pconnect("123.456.789.123",11211);
Run Code Online (Sandbox Code Playgroud)

解决了这个问题.

感谢大家!