php 如何实现多进程-PHP问题

资源魔 95 0

php完成多过程的办法:起首开启pcntl扩大;而后用array_chunk函数把指定命组切割为每一500个元素一个数组;接着进行父过程逻辑解决和子过程解决;最初期待子过程执行完结便可。

保举:《PHP视频教程》

php多过程完成

当一个过程执行工夫过长,需求是用多过程合成义务,缩短顺序执行工夫

pcntl是php的一个多过程扩大,pcntl是process control的缩写

上面简略讲下pcntl完成多过程的形式。

pcntl_fork — 正在以后过程以后地位孕育发生分支(子过程)。译注:fork是创立了一个子过程,父过程以及子过程 都从fork的地位开端向下持续执行,没有同的是父过程执行进程中,失去的fork前往值为子过程 号,而子过程失去的是0。

例子:

$habit_class这个数组有5000条数据,以是先用array_chunk函数把该数组切割为每一500个元素一个数组。
$habit_class = array_chunk($habit_class,500,true);
foreach($habit_class as $k2=>$v2){
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} elseif ($pid) {
//这里是父过程逻辑解决,父过程会前往子过程的pid;
} else {// 子过程解决,子过程前往的pid未0;
foreach($v2 as $k=>$v){
    //进行详细营业解决
}
}
exit;// 肯定要留意加入子过程,不然pcntl_fork() 会被子过程再fork,带来解决上的影响。
}
}
// 期待子过程执行完结
while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
//echo "Child $status completed\n";
}

以上就是php 若何完成多过程的具体内容,更多请存眷资源魔其它相干文章!

标签: php php教程 php故障解决 php使用问题

抱歉,评论功能暂时关闭!