Как перезапустить memcached из PHP - PullRequest
2 голосов
/ 26 марта 2012

У меня есть vps-хостинг с centos. На этом сервере находятся Apache, PHP, MySql. Я установил memcached. А иногда (раз в 3-4 дня) прекращает работу memcached - не знаю почему, в файле журнала отсутствует необходимая информация.

Я нашел такое решение - каждые 10 минут запускается cron, который проверяет, запущен или нет memcached (через команду memcached-tool), когда memcached уже вылетел - я отправляю почту и через командную строку сервера начинаю memv = cached

Но я бы запустил memcached автоматически, но я не могу этого сделать.

Я так пробовал команду

system("/etc/init.d/memcached start");
exec("service memcached start");
system("service memcached start");

но у меня нет результата.

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Хочу просто отметить, что гораздо безопаснее создать настоящий cronjob для подобных вещей.

Пожалуйста, прочитайте больше о функции exec() здесь: http://php.net/manual/en/function.exec.php

Кроме того, если safe_mode включен, вы не сможете выполнять команды за пределами вашего safe_mode_exec_dir.Они установлены в php.ini или в пользовательской конфигурации php.

Как отметил другой ответчик, было бы лучше изолировать причину сбоя, а не повторять его.Какие ошибки вы получаете, когда происходит сбой memcached?Очевидно, у вас есть какой-то способ узнать, что он разбился, иначе вы бы не задавали вопрос.Наиболее очевидным ответом может быть то, что кеш заполнен, и ваши скрипты слишком сильно / часто попадают в кеш, чтобы его можно было выгружать.

0 голосов
/ 26 марта 2012

Вам, вероятно, понадобится использовать sudo. Пользователь, работающий с apache, не может запускать сам скрипт init.

system("sudo /etc/init.d/memcached start");

Вероятно, разрешит пользователю apache использовать sudo. это делается с помощью команды visudo. http://www.gratisoft.us/sudo/visudo.man.html

Но, честно говоря, лучше было бы использовать что-то вроде monit, чтобы автоматизировать роль «сторожевого пса». Его предназначено для этого. http://mmonit.com/monit/

0 голосов
/ 26 марта 2012

Вы должны использовать sudo, чтобы заставить php эскалировать до root, прежде чем убивать и запускать memcached, иначе вы получите разрешение.

P.S. попытайтесь проверить, почему происходит сбой memcached вместо перезапуска !!

...