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中文件上传的安全问题
Oct 09 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php 操作调试的方法
Jul 12 PHP
php生成图形(Libchart)实例
Nov 06 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
PHP中list方法用法示例
Dec 01 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 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的FTP学习(三)
2006/10/09 PHP
php分页代码学习示例分享
2014/02/20 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
使用python存储网页上的图片实例
2018/05/22 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
Hibernate持久层技术
2013/12/16 面试题
大学总结自我鉴定
2014/01/18 职场文书
怎样填写就业意向
2014/04/02 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
高中社区服务活动报告
2015/02/05 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
python实现简单的井字棋
2021/05/26 Python