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 相关文章推荐
一个php作的文本留言本的例子(六)
Oct 09 PHP
用PHP实现的随机广告显示代码
Jun 14 PHP
PHP中文件上传的一个问题
Sep 04 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
基于laravel缓冲cache的用法详解
Oct 23 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
比较discuz和ecshop的截取字符串函数php版
2012/09/03 PHP
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
2018/05/15 NodeJs
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
使用python远程操作linux过程解析
2019/12/04 Python
python基于event实现线程间通信控制
2020/01/13 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
专科毕业生求职简历的自我评价
2013/10/12 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
暑期培训随笔感言
2014/03/10 职场文书
公司活动总结范文
2014/07/01 职场文书
见习报告怎么写
2014/10/31 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
先进集体申报材料
2014/12/25 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技