加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP pcntl_exec 调用多个子进程并行执行,主进程等待全部子进程完成示例

发布时间:2023-04-27 10:41:12 所属栏目:PHP教程 来源:
导读:<?PHP
$childs = array();
$cmds=array(
array(&#39;/root/sub.PHP&#39;,&#39;120&#39;),array(&#39;/root/sub.PHP&#39;,&#39;120&#39;)
);
echo &#39;begin&#39;;
echo date("Y-m-d H:i:s");
foreac
<?PHP
$childs = array();
$cmds=array(
        array('/root/sub.PHP','120'),array('/root/sub.PHP','120')
);
echo 'begin';
echo date("Y-m-d H:i:s");
foreach($cmds as $cmd){
        $pid=pcntl_fork();
        if($pid==-1){ //进程创建失败
                die('fork child process failure!');
        }
        else if($pid){ //父进程处理逻辑
                $childs[] = $pid;
                pcntl_wait($status,WNOHANG);
        }
        else{ //子进程处理逻辑
                pcntl_exec('/usr/bin/PHP',$cmd);
        }
}
while (count($childs) > 0) {
    foreach ($childs as $key => $pid) {
        $res = pcntl_waitpid($pid,$status,WNOHANG);
//-1代表error,大于0代表子进程已退出,返回的是子进程的pid,非阻塞时0代表没取到退出子进程
        if ($res == -1 || $res > 0)
            unset($childs[$key]);
    }
    sleep(1);
}
echo date("Y-m-d H:i:s");
echo 'done';
?>
子程序

<?PHP
echo $argv[1];
sleep ($argv[1]);
?>

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章