Php 防止信号传播到子进程
我有一个脚本toto1.php,它在后台调用另一个脚本toto2.php toto1.phpPhp 防止信号传播到子进程,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:
$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答案。