2011-05-18 104 views
2

設置: 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連接但不響應任何命令

問題:

未解決的問題cannot store values into memcache和這些線程的Super strange PHP error

無類似已經解決了問題,沒有問題的作者,隨後建議給出。我跟着他們,但它仍然不起作用。

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. 

我試圖$ memcached -S,以確保分佈式緩存是在禁用SASL支持編譯。 響應:「該服務器不是用SASL支持構建的。」

此外,意見之一是

您可能正在運行的memcached沒有ASCII協議的支持,例如,如果你運行:

$ memcached -B binary 

如果是這樣的情況下,刪除-B參數完全,PHP和Telnet應該工作。

內存緩存啓動行是:

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

在它沒有B的說法。

任何想法?

回答

0

我會告訴你的系統sadmin。我認爲可能涉及防火牆。

+0

它會阻擋什麼?我的意思是如果連接經過,它不能阻塞11211端口,對吧? – glum 2011-05-23 16:15:58

5

可能有趣的人。

問題已解決。

這裏是問題所在(也許它會幫助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); 

修復了這個問題。

謝謝大家!

+0

**歡迎使用StackOverflow!**如果您發現解決問題的答案(如此),請**接受**。這很容易,只需點擊選票區域上的綠色**勾號**即可。謝謝! – 2011-05-25 16:03:26