Php 防止信号传播到子进程

Php 防止信号传播到子进程,php,unix,process,background-process,Php,Unix,Process,Background Process,我有一个脚本toto1.php,它在后台调用另一个脚本toto2.php toto1.php $command = 'nohup php toto2.php > /dev/null 2> /dev/null &'; exec($command); while (true) { echo "sleep...\n"; sleep(1); } <?php function signalHandler($signal) { echo "SIGNAL:

我有一个脚本toto1.php,它在后台调用另一个脚本toto2.php

toto1.php

$command = 'nohup php toto2.php > /dev/null 2> /dev/null &';
exec($command);
while (true) {
    echo "sleep...\n";
    sleep(1);
}
<?php
function signalHandler($signal)
{
    echo "SIGNAL: $signal\n";
    exit;
}
pcntl_signal(SIGINT, 'signalHandler');

for ($i = 0;;$i++) {
    pcntl_signal_dispatch();
    echo "HELLO $i\n";
    sleep(1);
}
totoo2.php

$command = 'nohup php toto2.php > /dev/null 2> /dev/null &';
exec($command);
while (true) {
    echo "sleep...\n";
    sleep(1);
}
<?php
function signalHandler($signal)
{
    echo "SIGNAL: $signal\n";
    exit;
}
pcntl_signal(SIGINT, 'signalHandler');

for ($i = 0;;$i++) {
    pcntl_signal_dispatch();
    echo "HELLO $i\n";
    sleep(1);
}

如果您有一个典型的Linux发行版,请尝试使用
setsid
而不是
nohup
,并告诉我们它是否有用。@MarkPlotnick它成功了,谢谢!好。如果没有人使用全php解决方案回答,我将发布setsid答案。