cgiで動いているphpをforkすると

apache上で動くphpのプロセスをforkさせるとどうなるか、気になったので調べた。

parent proc    —(wait) —>  do -> end
|child process fork (wait)

|

do

|

end

ここでどちらの動作が返答として帰ってくるのか気になった。結論としては、一概にそうとはいえない(なぜだかsleepがきかず、さっさと応答しちゃうことがあった。ただし10秒とか待たされることは無かった)が早く応答した側となる模様。

$num = $_POST[‘num’];
//print $num;
$pid= pcntl_fork();
if($pid === 0){
// child
$fp=fopen(“hoge.txt”,”aw”);
sleep(10);
fputs($fp,$_POST[‘num’].”\n”);
fclose($fp);
}else{
// parent
sleep(1);
$file = file(“hoge.txt”);
var_dump($file);

}

?>

コメントを残す