Назад | Перейти на главную страницу

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) завершился ошибкой: Тайм-аут сети (0) в /var/www/html/admin/test.php в строке 62

В чем может быть проблема? Я новичок в memcached.

Проверить прослушивание

Бегать 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 прослушивает TCP и UDP как для IPv4, так и для IPv6. Я предполагаю, что запись / etc / services для memcache - это порт 11211. Служба прослушивает.

Вручную проверьте, что сервер отвечает на команды

Я бы сослался на этот вопрос: https://stackoverflow.com/questions/6045187/memcache-connects-but-doesnt-respond-to-any-command и убедитесь, что сервер отвечает на команды, которые вы отправляете через telnet или netcat. Вероятно, также будет очень полезно, если вы запустите tcpdump или wirehark, чтобы захватить сетевой трафик и действительно увидеть, какие пакеты перемещаются.

Отлаживайте вещи без предварительного изменения конфигурации кэша памяти. Попытка изменить адрес привязки сервера в соответствии с этим вопросом выше должна быть последним, что вы делаете. Сообщите мне о своем прогрессе.

многие люди добились хороших результатов при использовании 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

Просто запустите демон memcache, используя эту команду в терминале

memcached -d -m 512 -l 127.0.0.1 -p 11211 -u nobody

где

  • -m на память,
  • -p для порта,
  • -l для ip-адреса сервера,
  • -u для пользователя