Я запускаю много процессов PHP через Supervisord. Иногда мне нужно закрыть Супервизор. Когда я это делаю, я посылаю сигнал TERM ко всем процессам PHP, которые он породил (используя stopsignal=TERM
в supervisord.conf).Как поймать сигнал UNIX TERM, чтобы я мог изящно завершить процесс PHP?
Я хотел бы перехватить этот сигнал TERM и изящно завершить процесс PHP. Это можно сделать?
Я добавил этот код на PHP программу, чтобы попытаться сделать это:
declare(ticks = 1);
function gracefully_terminate() {
echo "\n\ngracefully terminating\n\n";
}
pcntl_signal(SIGTERM, "gracefully_terminate");
Также ... для удобства тестирования, как я могу отправить сигнал TERM процессу PHP с помощью интерфейса командной строки ? Я пробовал использовать Kill -s TERM #####
(##### - это PID процесса PHP). Возможно, это посылает сигнал TERM, но это не завершает процесс PHP.
ли ваш supervisord работник имеет возможность сделать паузу некоторое время и затем остановить работника в 'gracefully_terminate () 'метод? Я борюсь с аналогичной проблемой (http://stackoverflow.com/questions/34291871/pause-supervisord-stop-event-for-a-while-using-php). У вас есть какие-либо предложения? – Roopendra