Задать вопрос

Как подключиться из PHP к memcached с использованием socket?

Здравствуйте!

Пробую подключиться к Memcached с использованием PHP (в рассматриваемом случае использовалась версия 8.2). По tcp коннектится нормально, но через socket из PHP может подключиться.
Конфиг Memcached:
PORT="0"
USER="apache"
MAXCONN="10240"
CACHESIZE="400"
OPTIONS="-t 8 -s /tmp/memcached.sock -a 0777"

Соответственно выполняю команду systemctl restart memcached
При таком конфиге успешно коннектится из CMD, что можно проверить выполнением команды: echo "stats" | nc -U /tmp/memcached.sock
Так же скажу, что указанная в конфиге опция -a, видимо значения не имеет, просто на всякий случай решил права установить 777, а вот пользователь видимо имеет значение, если оставить пользователя memcached, то из командной строки указанной выше командой не удастся подключиться (при подключении по tcp когда пользователь memcached соединение устанавливается).

В PHP проверяю так:
$memcache = new Memcache;
// Возвращается false (по tcp подключается без проблем)
var_dump($memcache->connect("unix:///tmp/memcached.sock",0));


В чём может быть дело, как настроить чтобы работало по socket?

Точно ли нужно в методе connect указывать путь как unix:///, может быть как то иначе?
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
karabanov
@karabanov
Системный администратор
Может влиять SElinux - логи можно посмотреть где-то в районе /var/log/avc.log, /var/log/audit/audit.log, /var/log/audit.log (зависит от дистрибутива и наличия audit демона).
Ответ написан
Комментировать
попробуйте так:
<?php
$memcache_obj = new Memcache;
$memcache_obj->addServer('unix:///tmp/memcached.sock', 0);

У меня на Bitrix VA пример из документации работает именно так ( только надо real на float заменить )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы