Memcache подключается, но не отвечает ни на одну команду - PullRequest
2 голосов
/ 18 мая 2011

Настройка: 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 и Супер странноОшибка 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

Решенные решения:

Подключение к 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, чтобы убедиться, что memcached был скомпилирован с отключенной поддержкой SASL.Ответ: «Этот сервер не построен с поддержкой SASL.»

Кроме того, один из комментариев был

Возможно, вы выполняете memcached без поддержки протокола ASCII, например, если вы запустили:

 $ memcached -B binary

В таком случае полностью удалите аргумент -B, и PHP и telnet должны работать.

Строка запуска memcache:

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

Нет аргумента B в этом.

Есть идеи?

Ответы [ 2 ]

6 голосов
/ 25 мая 2011

Кому это может быть интересно.

Проблема решена.

Вот в чем проблема (возможно, это помогло бы авторам из 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 голосов
/ 23 мая 2011

Я бы поговорил с вашим системным садмином. Я думаю, что там может быть брандмауэр.

...