PHP pcntl_exec 调用多个子进程并行执行,主进程等待全部子进程完成示例
发布时间:2023-04-27 10:41:12 所属栏目:PHP教程 来源:
导读:<?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");
foreac
$childs = array();
$cmds=array(
array('/root/sub.PHP','120'),array('/root/sub.PHP','120')
);
echo 'begin';
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]); ?> (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐