PHP CURL 多线程操作代码实例


Posted in PHP onMay 13, 2015

使用方法:

$urls = array("http://baidu.com", "http://21andy.com", "http://google.com");
$mp = new MultiHttpRequest($urls);
$mp->start();
/*
 * Curl 多线程类
 * 使用方法:
 * ========================
$urls = array("http://baidu.com", "http://dzone.com", "http://google.com");
$mp = new MultiHttpRequest($urls);
$mp->start();
 * ========================
 */
class MultiHttpRequest {
  public $urls = array();
  public $curlopt_header = 1;
  public $method = "GET";
 
  function __construct($urls = false) {
    $this->urls = $urls;
  }
 
  function set_urls($urls) {
    $this->urls = $urls;
    return $this;
   }
 
   function is_return_header($b) {
     $this->curlopt_header = $b;
     return $this;
   }
 
   function set_method($m) {
     $this->medthod = strtoupper($m);
     return $this;
   }
 
   function start() {
     if(!is_array($this->urls) or count($this->urls) == 0){
      return false;
     }
     $curl = $text = array();
     $handle = curl_multi_init();
     foreach($this->urls as $k=>$v){
      $curl[$k] = $this->add_handle($handle, $v);
     }
 
     $this->exec_handle($handle);
     foreach($this->urls as $k=>$v){
       curl_multi_getcontent($curl[$k]);
       echo $curl[$k]."\n";
       //$text[$k] = curl_multi_getcontent($curl[$k]);
       //echo $text[$k], "\n\n";
       curl_multi_remove_handle($handle, $curl[$k]);
     }
     curl_multi_close($handle);
   }
 
   private function add_handle($handle, $url) {
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, $url);
     curl_setopt($curl, CURLOPT_HEADER, $this->curlopt_header);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     curl_multi_add_handle($handle, $curl);
     return $curl;
   }
 
   private function exec_handle($handle) {
     $flag = null;
     do {
      curl_multi_exec($handle, $flag);
     } while ($flag > 0);
   }
}
PHP 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP微信支付开发实例
Jun 22 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
thinkphp分页集成实例
Jul 24 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
php pdo连接数据库操作示例
Nov 18 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 PHP
如何判断微信付款码和支付宝付款码
Apr 01 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 #PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 #PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 #PHP
PHP版本如何选择?应该使用哪个版本?
May 13 #PHP
PHP Hash算法:Times33算法代码实例
May 13 #PHP
你应该知道PHP浮点数知识
May 13 #PHP
PHP浮点数精度问题汇总
May 13 #PHP
You might like
php缓冲 output_buffering的使用详解
2013/06/13 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
js CSS操作方法集合
2008/10/31 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
小结Python用fork来创建子进程注意事项
2014/07/03 Python
带你了解python装饰器
2017/06/15 Python
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
python实现名片管理系统
2018/11/29 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
英语自我评价范文
2014/01/24 职场文书
夏季药店促销方案
2014/08/22 职场文书
教师听课学习心得体会
2016/01/15 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫