並列プロセスを実行して、少なくとも4人のユーザーを同時に処理したいと思います。
ob_end_flush();
for($i = 0; $i < 4; $i++)
{
$pid=pcntl_fork();
if ($pid == -1) {
echo("Could not create a new child.");
exit;
} else if ($pid == 0) {
//This will get excuted only in the child process
echo 'parent1';
sleep(5);
echo 'parent2';
exit;
}
}
出力は次のようになります。
> php testscript.php
parent1
parent1
parent1
parent1
> parent2
parent2
parent2
parent2
現在起こっていることはparent1
、スクリプトのコントロールが4回表示された後、失われ、新しい空のコマンドラインが開始された後です。さらに5秒間待った後、残りの出力が表示されます。
どうすればそれが起こらないようにすることができますか。好きなときにスクリプトを壊せるようにしたいと思います。
編集
CTRL + Cを押して端末経由で信号を送信した場合、スクリプトは停止しません。その瞬間に停止するようにスクリプトに通知する方法が必要です。