Я использую php 5.4. Я использую gearman и supervisor для управления рабочими. Я хочу поймать сигнал TERM
созданный супервизором в PHP. У меня есть следующий рабочий код:
pcntl_signal(SIGTERM, function($sig){ error_log("interrupted", false); }); while(true){ pcntl_signal_dispatch(); $gw->work(); } }
вpcntl_signal(SIGTERM, function($sig){ error_log("interrupted", false); }); while(true){ pcntl_signal_dispatch(); $gw->work(); } }
-pcntl_signal(SIGTERM, function($sig){ error_log("interrupted", false); }); while(true){ pcntl_signal_dispatch(); $gw->work(); } }
Мой файл confisor-диспетчера выглядит следующим образом:
[program:public_pdf_convert] process_name = pdf_convert_%(process_num)02d command = /usr/local/bin/php worker_pdf_convert.php numprocs = 1 directory = /projects/mv2/deliver/batch/batch/workers/
По умолчанию супервизор использует TERM
. Когда я останавливаю супервизора, я могу проверить, что рабочий-редуктор продолжает работать, но обратный вызов для pcntl_signal
никогда не вызывается. Я также пробовал использовать сигнал INT
.