2

设置: 阿帕奇;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。

问题:

类似于未解决的问题cannot store values into 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

尝试的解决方案:

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

[/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 应该可以工作。

内存缓存起始行是:

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

其中没有 B 论点。

有任何想法吗?

4

2 回答 2

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);

解决了这个问题。

感谢大家!

于 2011-05-25T08:44:03.523 回答
0

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

于 2011-05-22T20:10:56.093 回答