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 相关文章推荐
来自PHP.NET的入门教程
Oct 09 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
Jun 05 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
ThinkPHP实现登录退出功能
Jun 29 PHP
PHP代码重构方法漫谈
Apr 17 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
PHP CURL使用详解
Mar 21 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
May 27 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
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
艺人经纪人岗位职责
2014/04/15 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
楚门的世界观后感
2015/06/03 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers