私はこれを達成したい:
デーモンが 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 では機能しません。そのバージョンでも動作させる方法はありますか?
ありがとう!
ロニー