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.MVC的模板标签系统(一)
Sep 05 PHP
ASP和PHP都是可以删除自身的
Apr 09 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
PHP模块memcached使用指南
Dec 08 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 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/06/20 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
Python contextlib模块使用示例
2015/02/18 Python
详解Python文本操作相关模块
2017/06/22 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
业务部经理岗位职责
2014/01/04 职场文书
2015年市场部工作总结
2015/04/30 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
python中的sys模块和os模块
2022/03/20 Python
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL