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 数组实例说明
Aug 18 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
解析php入库和出库
Jun 25 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
19个超实用的PHP代码片段
Mar 14 PHP
php中函数前加&符号的作用分解
Jul 08 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
PHP时间函数使用详解
Mar 21 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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可逆加密/解密函数分享
2012/09/25 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php实现json编码的方法
2015/07/30 PHP
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
实例浅析js的this
2016/12/11 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
python获取本机外网ip的方法
2015/04/15 Python
Python守护线程用法实例
2017/06/23 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
PyQt5实现简易电子词典
2019/06/25 Python
Django models filter筛选条件详解
2020/03/16 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
一套C++笔试题面试题
2012/06/06 面试题
c++工程师面试问题
2013/08/04 面试题
给朋友的道歉信
2014/01/09 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
2014年公司工作总结
2014/11/22 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
JavaScript实现班级抽签小程序
2021/05/19 Javascript
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python