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 xml实例 留言本
Mar 20 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
功能强大的PHP发邮件类
Aug 29 PHP
php文件上传、下载和删除示例
Aug 28 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 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连接MongoDB示例代码
2012/09/06 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
PHP 转义使用详解
2013/07/15 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
jquery 笔记 事件
2011/11/02 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python查找指定具有相同内容文件的方法
2015/06/28 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
python中setuptools的作用是什么
2020/06/19 Python
python集合能干吗
2020/07/19 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
会议接待欢迎词
2014/01/12 职场文书
战友聚会主持词
2014/04/02 职场文书
运动会方队口号
2014/06/07 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL