web-dev-qa-db-ja.com

Memcachedとphpエラー

Memcachedをインストールしましたが、次のようなスクリプトテストを試してみました。

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);
echo $memcache->getVersion();

ネストエラーを受け取りました:

:通知:MemcachePool :: getversion():サーバー127.0.0.1(tcp 11211、udp 0)が次の場合に失敗しました:62行目の/var/www/html/admin/test.phpのネットワークタイムアウト(0)

何が問題なのですか? memcachedは初めてです。

4
bejan corneliu

リスニングを確認する

実行lsof -i rootとして、リストしたポートでmemcacheデーモンが実行されていることを確認します。

正気のためにフォーマットされています:

memcached 16526 corneliu 31u IPv4 207975 0t0 TCP *:memcache (LISTEN) 
memcached 16526 corneliu 32u IPv6 207976 0t0 TCP *:memcache (LISTEN) 
memcached 16526 corneliu 33u IPv4 207979 0t0 UDP *:memcache
memcached 16526 corneliu 34u IPv6 207980 0t0 UDP *:memcache 

したがって、memcacheサーバーはIPv4とIPv6の両方でTCPとUDPの両方をリッスンしています。memcacheの/ etc/servicesエントリはポート11211であると想定しています。サービスはリッスンしています。

サーバーがコマンドに応答することを手動で確認する

この質問を参照します: https://stackoverflow.com/questions/6045187/memcache-connects-but-doesnt-respond-to-any-command サーバーがコマンドに応答していることを確認しますtelnetまたはnetcat経由で送信します。 tcpdumpまたはwiresharkを実行してネットワークトラフィックをキャプチャし、実際にどのパケットが移動しているかを確認する場合にも、おそらく非常に役立ちます。

最初にmemcache構成を変更せずにデバッグします。上記の質問に従ってサーバーのバインドアドレスを変更しようとすることは、最後に行う必要があります。進捗状況を教えてください。

5
Jeff Ferland

多くの人がconnectの代わりにpconnectを使用して良い結果を出しました

$memcache = new Memcache;
$memcache->pconnect('127.0.0.1', 11211);
echo $memcache->getVersion();

詳細はこちら http://hostingfu.com/article/memcachepoolget-server-failed-with-network-timeout-possible-fixes

4
Mik