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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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
浅析Yii2中GridView常见操作
2016/04/22 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
用一段js程序来实现动画功能
2007/03/06 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
vue mounted组件的使用
2018/06/18 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
python os.path模块常用方法实例详解
2018/09/16 Python
pygame实现飞机大战
2020/03/11 Python
python PIL模块的基本使用
2020/09/29 Python
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
什么是抽象
2015/12/13 面试题
应届生财务会计求职信
2013/11/05 职场文书
医学生自荐信范文
2013/12/03 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
庆七一宣传标语
2014/10/08 职场文书
党的作风建设心得体会
2014/10/22 职场文书
2015新学期家长寄语
2015/02/26 职场文书
2015年统战工作总结
2015/05/19 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
队列队形口号
2015/12/25 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript