[请益] 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