phpでforkした時のグローバル変数の扱いについて

phpでプロセスをforkしたとき、グロバール変数がそのまま持ち回れるのか調べた。

結果は持ち回れない。

<?php

$arr = array
(1, 2, 4, 8);
foreach($arr as $val){
global $sum;
$i++;
sleep(3);
$pid = pcntl_fork();
if($pid === 0){
var_dump(‘child’);
$sum += $val;
exit;
}else{
var_dump(‘sum:’.$sum.’, i:’.$i);
}
}

%php pcntl_test.php
string(5) “string(9) “sum:, i:1″
child”
string(5) “string(9) “sum:, i:2″
child”
string(9) “string(5) “sum:, i:3child”

string(9) “string(5) “sum:, i:4child”

コメントを残す