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

Как заставить supervisord подождать корректного завершения процесса?

Использую для демонизации PHP-процессов supervisord. Демон может долго запрашивать что-нибудь по какому-нибудь API и в этот момент кому-нибудь может понадобиться увеличить количество каких-нибудь процессов и он всё перезапустит. Или просто кто-то может жмакнуть перезапуск демона, а в это время демон выполняет важную работу.
Я назначаю обработчика pcntl_signal(SIGTERM, "handler"); в обработчике указываю для 15-го сигнала не вызывать exit, но процесс всё равно перезапускается, его pid меняется.
Если запускаю из консоли и перехватываю сигнал 2, ctrl+c, то это работает нормально, процесс не останавливается.
Вот вопрос - как я могу из PHP-кода заставить супервизор подождать?
  • Вопрос задан
  • 306 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@developinwed
На сколько я понял вам нужен "мягкий перезапуск"(reload). Супервизор рестартует процесс, он не сделает вам релоад, как вы хотите. Вот отличная статья о мягком перезапуске от Badoo habrahabr.ru/company/badoo/blog/252809, с исходниками на гитхабе https://github.com/badoo/habr/tree/master/phprocksyd . Но там нужно патчить PHP, что не всегда возможно.
Опишите подробней, что делает ваш демон, можно ли форкнуть ваш процесс и обрабатывать задачи в форках?
Ответ написан
Ваш ответ на вопрос

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

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