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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
smarty简单入门实例
Nov 28 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
cakephp常见知识点汇总
Feb 24 PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 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去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php构造函数实例讲解
2013/11/13 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
python模块常用用法实例详解
2019/10/17 Python
python语言中有算法吗
2020/06/16 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
垃圾回收的优点和原理
2014/05/16 面试题
学生周末长期请假条
2014/02/15 职场文书
品牌推广策划方案
2014/05/28 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
医学专业大学生求职信
2014/07/12 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
python requests模块的使用示例
2021/04/07 Python
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
AJAX实现省市县三级联动效果
2021/10/16 Javascript