2013-08-24 18 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 
相關問題