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 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
MySQL GBK→UTF-8编码转换
May 24 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
php array_flip() 删除数组重复元素
Jan 14 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
PHP两种实现无级递归分类的方法
Mar 02 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配置php-fpm启动参数及配置详解
2013/11/04 PHP
php判断表是否存在的方法
2015/06/18 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
javascript中的有名函数和无名函数
2007/10/17 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
Python序列类型的打包和解包实例
2019/12/21 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
授权委托书
2014/07/31 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
导游词之千岛湖
2019/09/23 职场文书
golang操作rocketmq的示例代码
2022/04/06 Golang
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS