【问题标题】:Memcache connects but doesn't respond to any commandMemcache 连接但不响应任何命令
【发布时间】:2011-08-28 01:27:42
【问题描述】:

设置: 阿帕奇; PHP 5.2.9; libevent(对于 memcached 是必需的)1.3 版; memcached server version 1.2.2(试过1.4.5、1.4.0,现在降级到1.2.2,没区别); memcached php pecl 模块版本 2.2.6。

问题:

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

这些主题都没有解决问题,并且问题的作者都没有遵循给出的建议。我都跟着他们了,还是不行。

如果我通过 PHP 连接,Memcache 代码不会显示任何错误,但是一旦我尝试执行任何命令(例如 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。”

另外,其中一个 cmets 是

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

 $ memcached -B binary

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

memcache 起始行是:

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

其中没有 B 参数。

有什么想法吗?

【问题讨论】:

    标签: php memcached ascii sasl


    【解决方案1】:

    可能对谁感兴趣。

    问题已解决。

    这就是问题所在(也许它会帮助来自 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);
    

    解决了这个问题。

    谢谢大家!

    【讨论】:

    • 欢迎使用 StackOverflow! 如果您找到了可以解决您的问题的答案(例如这个),请接受。很简单,只需点击投票区的绿色即可。谢谢!
    【解决方案2】:

    我会与您的系统管理员交谈。我认为可能涉及防火墙。

    【讨论】:

    • 它会阻止什么?我的意思是如果连接通过,它不会阻塞 11211 端口,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多