PHP的pcntl多进程用法实例

 更新时间:2015年03月19日 15:11:27   作者:qdujunjie  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • 对text数据类型不支持代码页转换 从: 1252 到: 936

    对text数据类型不支持代码页转换 从: 1252 到: 936

    错误的提示同样是不能从text的转换问题:这主要是由于数据库在设计的时候的数据类型存在Text——而我们采用的是中文操作系统。检查数据库的脚本,修改Text为ntext。支持unicode。
    2011-04-04
  • PHP面向对象继承用法详解(优化与减少代码重复)

    PHP面向对象继承用法详解(优化与减少代码重复)

    这篇文章主要介绍了PHP面向对象继承用法,结合实例形式分析了php面向对象程序设计中继承的使用方法及代码优化处理与减少代码重复的相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • php递归遍历多维数组的方法

    php递归遍历多维数组的方法

    这篇文章主要介绍了php递归遍历多维数组的方法,实例分析了php数组遍历的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • ThinkPHP模板标签eq if 中区分0,null,false的方法

    ThinkPHP模板标签eq if 中区分0,null,false的方法

    下面小编就为大家带来一篇ThinkPHP模板标签eq if 中区分0,null,false的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • php更改目录及子目录下所有的文件后缀扩展名的代码

    php更改目录及子目录下所有的文件后缀扩展名的代码

    今天遇到要改变当前目录下指定类型的文件类型,本来想要用批处理来做这个,结果没找到合适。就自己去查了下资料,用Php来处理一下。
    2010-10-10
  • PHP折半(二分)查找算法实例分析

    PHP折半(二分)查找算法实例分析

    这篇文章主要介绍了PHP折半(二分)查找算法,结合实例形式较为详细的分析了php折半(二分)查找算法的概念、原理、实现与使用方法,并附带了一个php折半(二分)查找算法类供大家参考,需要的朋友可以参考下
    2018-05-05
  • php中chdir()函数用法实例

    php中chdir()函数用法实例

    这篇文章主要介绍了php中chdir()函数用法,以实例形式简单讲述了chdir实现切换目录的方法,需要的朋友可以参考下
    2014-11-11
  • PHP下使用CURL方式POST数据至API接口的代码

    PHP下使用CURL方式POST数据至API接口的代码

    PHP下使用curl方式post数据至api接口的方法,大部分的API的HTTP请求方式都为GET,所以不管用AJAX和PHP二次处理都能拿到返回的数据,但是一些API的HTTP请求方式是POST,那么我们就需要使用到curl了
    2013-02-02
  • php生成随机数的三种方法

    php生成随机数的三种方法

    分享下php生成随机数的三种方法,生成1-10之间的不重复随机数,php生成不重复随机数的例子,需要的朋友参考下
    2014-09-09
  • 详解WordPress中给链接添加查询字符串的方法

    详解WordPress中给链接添加查询字符串的方法

    这篇文章主要介绍了详解WordPress中给链接添加查询字符串的方法,依靠add_query_arg()函数来实现,需要的朋友可以参考下
    2015-12-12

最新评论