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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
php 验证码实例代码
Jun 01 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
php将金额数字转化为中文大写
Jul 09 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
Mar 29 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 PHP
PHP7修改的函数
Mar 09 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
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
Python使用gensim计算文档相似性
2016/04/10 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
Python基于当前时间批量创建文件
2020/05/07 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
好的演讲稿开场白
2013/12/30 职场文书
司马光教学反思
2014/02/01 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
二手房购房意向书范本
2014/04/01 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
2014年班组工作总结
2014/11/20 职场文书
责任书格式
2015/01/29 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
我的长征观后感
2015/06/09 职场文书
神秘岛读书笔记
2015/07/01 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
Java实现多线程聊天室
2021/06/26 Java/Android
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android