1
我正在通过Supervisord运行许多PHP进程。有时我需要关闭Supervisord。当我这样做时,我会发送一个TERM信号给它所产生的所有PHP进程(使用supervisord.conf中的stopsignal=TERM
)。如何捕获UNIX TERM信号,以便我可以正常地终止PHP进程?
我想拦截TERM信号并正常终止PHP进程。这可以做到吗?
我已经添加了此代码,以我的PHP程序,试图做到这一点:
declare(ticks = 1);
function gracefully_terminate() {
echo "\n\ngracefully terminating\n\n";
}
pcntl_signal(SIGTERM, "gracefully_terminate");
也...便于测试,我怎么通过CLI发送TERM信号给PHP程序?我试过使用Kill -s TERM #####
(#####是PHP进程的PID)。也许这是发送TERM信号,但它并没有终止PHP进程。
难道你supervisord劳动者有一段时间暂停,然后停止工人'gracefully_terminate(能力)'方法?我在类似的[问题]挣扎(http://stackoverflow.com/questions/34291871/pause-supervisord-stop-event-for-a-while-using-php)。你有什么建议吗? – Roopendra