[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP - как управлять демонами автоматически?
at0m1x
Привет всем)

Есть проект, в котором используются фоновые обработчики очередей задач, например отправка писем. Эти фоновые обработчики работают в виде демоном. Каждый демон настроен в upstart'е, для того что бы в случае падения, система автоматически его запускала. Но есть небольшое неудобство, заключается оно в том, что для каждого демона нужно создавать отдельный конфиг апстарта вручную. ОС: Ubuntu.

Вопрос: есть ли для PHP какая либо утилита, которая позволяла бы в проекте создать конфиг файл, по которому бы демоны автоматически экспортировались в апстарт. Или что бы эта утилита сама отслеживала работу демонов и перезапускала их в случае падения.

Знаю что есть подобные утилиты в других ЯП например в руби это фореман, в ноде это например pm2. Но хотелоcь бы найти что то более "родное" именно для PHP.

Чего хотелось бы от этой утилиты:
- можно указывать кол-во инстансов демона
- авто-перезапуск через определенные промежутки времени (как по крону)
- авто-запуск при падении демона
- авто-запуск при старте ОС
- веб-интерфейс отображающий текущее потребление памяти и strout и strerr
VELIK505
я думаю supervisor может подойти
at0m1x
Остановился на супервайзере, из плюсов:
- легко ставится через apt-get
- имеет веб интерфейс в котором можно делать старт/стоп/рестарт демонов и смотреть логи
- конфиги демонов можно хранить прямо в проекте (!) http://supervisord.org/configuration.html#...ection-settings
- легко настроить использование supervisorctl без рута http://coffeeonthekeyboard.com/using-super...ot-or-sudo-977/
- также можно демонов для проекта объединить в группу и всей группой их рестартовать http://serverfault.com/questions/586708/ho...r-group-at-once
TranceIT
Цитата
- легко настроить использование supervisorctl без рута

Чтобы не иметь проблем он должен работать не от рута, а от имени пользователя запускающего веб-сервер. Обычно это www-data.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
chee
Лол, я обычно не заморачивался и писал что-то подобное в работе по cron


set_time_limit(0);
$output = shell_exec("ps o pid,command | grep emulator.php");

$processes = explode("\n", $output);
$processes = array_filter(array_map(function ($process) {
$parts = explode(' ', $process, 2);

if (empty($parts[1])) {
return null;
}

return array(
'pid' => $parts[0],
'command' => $parts[1],
);

}, $processes));

$launched = false;

foreach ($processes as $process) {
if ($process['command'] === 'php bin/emulator.php') {
$launched = true;
}
}


if (!$launched) {
shell_exec("php bin/emulator.php");
}


Надо будет, пощупать supervisor вдруг проще

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.