PHP的pcntl多进程用法实例


Posted in PHP onMarch 19, 2015

本文实例讲述了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 相关文章推荐
thinkphp3.0 模板中函数的使用
Nov 13 PHP
php二维数组转成字符串示例
Feb 17 PHP
php读取富文本的时p标签会出现红线是怎么回事
May 13 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
php安装swoole扩展的方法
Mar 19 #PHP
php清除和销毁session的方法分析
Mar 19 #PHP
Codeigniter发送邮件的方法
Mar 19 #PHP
Codeigniter实现发送带附件的邮件
Mar 19 #PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 #PHP
php检查日期函数checkdate用法实例
Mar 19 #PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 #PHP
You might like
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
PHP重载基础知识回顾
2020/09/10 PHP
对xmlHttp对象的理解
2011/01/17 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
javascript实现时钟动画
2020/12/03 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
跟老齐学Python之Import 模块
2014/10/13 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
pytorch 共享参数的示例
2019/08/17 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
详解Python IO口多路复用
2020/06/17 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
村委会贫困证明范文
2014/09/21 职场文书
以权谋私检举信范文
2015/03/02 职场文书
工作一年自我鉴定
2019/06/20 职场文书