phpでのforkの実現法
方法は2つある。
1.system関数 or exec関数を使う
<?php system("/tmp/bg.php > /dev/null &") ?>
ただし、この方法はあまりセキュアではなくソースコードを別ファイルに分けなければならない。
2.pcntl_fork関数を使う
<?php $pid = pcntl_fork(); if ($pid == -1) { printf('fork できません\n', $pid); } else if ($pid) { printf('親プロセス起動(%d)\n', $pid); pcntl_wait($status); // ゾンビプロセスから守る printf('親プロセス終了(%d)\n', $pid); } else { printf('子プロセス起動(%d)\n', $pid); sleep(10); printf('子プロセス終了(%d)\n', $pid); } ?>
正当なやり方だが、PHPの標準拡張モジュールを追加する必要があり準備が面倒
個人的には後者の方がセキュアなので後者推奨。