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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
php程序效率优化的一些策略小结
Jul 17 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
PHP自定义多进制的方法
Nov 03 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
php查询及多条件查询
2017/02/26 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
input 高级限制级用法
2009/03/26 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
全面理解闭包机制
2016/07/11 Javascript
jquery延迟对象解析
2016/10/26 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python调用接口的4种方式代码实例
2019/11/19 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
小学教师办公室制度
2014/02/03 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js
MySQL系列之三 基础篇
2021/07/02 MySQL