我想实现这一点:
如果守护进程获得 SIGHUP 则再次运行该进程(作为子进程)并杀死父进程。
当我运行它时,第一次工作:
> php test.php
> kill -HUP pid
> ps -ef |grep test.php
> result:... newPID test.php
问题是,如果现在我要杀死子进程,则不会触发该功能
> kill -HUP newPID
> ps -ef |grep test.php
> result: ... newPID(the same) test.php
编码:
test.php:
<?php
declare(ticks = 1);
$mypid = posix_getpid();
function sig_handler()
{
Global $mypid;
echo "Received sighup, we need to reload ourselves now \n";
echo "mypid:$mypid \n";
system("(php test.php)>/dev/null &");
posix_kill($mypid,9);
}
pcntl_signal(SIGHUP, "sig_handler");
sleep(500);
?>
此代码适用于 PHP 5.2.9,但不适用于 PHP 5.3.5。有没有办法让它也适用于那个版本?
谢谢!
罗尼