[請益] pcntl_fork 的結果跟預期的不同

作者: p52189 (鼠霸)   2016-12-01 16:37:00
先上code:
for($i = 0; $i < 3 ; $i++){
$pid = pcntl_fork();
if($pid == -1){
echo "error\n";
}elseif($pid == 0){
echo "child(".getmypid().")\n";
sleep(3);
exit();
}else{
pcntl_waitpid($pid, $status);
}
}
我本來預期三個children應該幾乎同時印出訊息
結果卻是第一個印完等三秒第二個才印,依此類推
請問這是哪裡誤會了?
謝謝
作者: p52189 (鼠霸)   2016-12-01 17:11:00
我是原PO,這個問題我朋友幫我解了,只要把 pcntl_waitpid移出去就可以了
作者: Jerr (身為老爸老媽嚕..)   2016-12-01 17:32:00
有 fork 給推
作者: shadowjohn (轉角遇到愛)   2016-12-01 18:33:00
好thread.php不用嗎
作者: p52189 (鼠霸)   2016-12-01 19:21:00
不能用,伺服器不能動不然我也QQ
作者: gpmm (銀色)   2016-12-01 22:15:00
好巧,我今天也才正好在寫 pcntl_fork XDD
作者: shadowjohn (轉角遇到愛)   2016-12-02 10:02:00
https://tudorbarbu.ninja/multithreading-in-php/雖然是2009年的東西,但相當實用...也是pcntl :)輕易就可以改出幾種常用的方法10份工作給三個人作,一定要三個人完成才領下一組或先作完的領下一組繼續,直到所有工作完成一起結束

Links booklink

Contact Us: admin [ a t ] ucptt.com