• 技术文章 >后端开发 >PHP问题

    php pcntl用法

    藏色散人藏色散人2021-03-30 09:49:12原创1027

    php pcntl的用法:首先创建一个PHP示例文件;然后使用PCNTL系列的函数处理一个事务;最后通过一个“$pids”数组让主进程等候所有进程完结之后再结束即可。

    本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

    PHP的pcntl多进程用法实例

    这篇文章主要介绍了PHP的pcntl多进程用法,实例分析了pcntl操作多进程的使用技巧,非常具有实用价值,需要的朋友可以参考下

    本文实例讲述了PHP的pcntl多进程用法。分享给大家供大家参考。具体分析如下:

    PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。所以应该使用pcntl函数了。

    假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出:

    $max = 800000;
    $workers = 20;
    $pids = array();
    for($i = 0; $i < $workers; $i++){
      $pids[$i] = pcntl_fork();
      switch ($pids[$i]) {
        case -1:
          echo "fork error : {$i} \r\n";
          exit;
        case 0:
          $param = array(
            'lastid' => $max / $workers * $i,
            'maxid' => $max / $workers * ($i+1),
          );
          $this->executeWorker($input, $output, $param);
          exit;
        default:
          break;
      }
    }
    foreach ($pids as $i => $pid) {
      if($pid) {
        pcntl_waitpid($pid, $status);
      }
    }

    这里当pcntl_fork出来以后,会返回一个pid值,这个pid在子进程中看是0,在父进程中看是子进程的pid(>0),如果pid为-1说明fork出错了。

    使用一个$pids数组就可以让主进程等候所有进程完结之后再结束了

    【推荐学习:PHP视频教程

    以上就是php pcntl用法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php pcntl
    上一篇:php.可以重启不 下一篇:php怎么去除警告
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP的pcntl进程控制之多进程消费模型• PHP的Pcntl多进程扩展的用法介绍• PHP如何开启pcntl模块并实现多进程编程呢?• 深入浅析php中的pcntl_fork()函数
    1/1

    PHP中文网