2013-08-24 16 views
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进程。

+0

难道你supervisord劳动者有一段时间暂停,然后停止工人'gracefully_terminate(能力)'方法?我在类似的[问题]挣扎(http://stackoverflow.com/questions/34291871/pause-supervisord-stop-event-for-a-while-using-php)。你有什么建议吗? – Roopendra

回答

-1

我不擅长php但不应该gracefully_terminate函数有一个参数?像:

function gracefully_terminate($signo) 

要终止从CLI的过程,你应该使用

kill -s SIGTERM ##### 

killall processname 
相关问题