2

我正在通过Supervisord运行许多 PHP 进程。有时我需要关闭 Supervisord。当我这样做时,我让它向它产生的所有 PHP 进程发送一个 TERM 信号(stopsignal=TERM在 supervisord.conf 中使用)。

我想拦截那个 TERM 信号并优雅地终止 PHP 进程。这可以做到吗?

我已将此代码添加到我的 PHP 程序中以尝试执行此操作:

declare( ticks = 1 );
function gracefully_terminate() {
    echo "\n\ngracefully terminating\n\n";
}
pcntl_signal( SIGTERM, "gracefully_terminate" );

另外...为了便于测试,如何通过 CLI 向 PHP 进程发送 TERM 信号?我试过使用Kill -s TERM #####(##### 是 PHP 进程的 PID)。也许这是在发送 TERM 信号,但它并没有终止 PHP 进程。

4

1 回答 1

-1

I am not that good at php but shouldn't gracefully_terminate function have one parameter? Like:

function gracefully_terminate($signo)

To terminate a process from CLI you should use

kill -s SIGTERM #####

or

killall processname
于 2013-08-24T23:35:03.520 回答