PHP CURL 多线程操作代码实例

 更新时间:2015年05月13日 09:35:32   投稿:junjie   我要评论

这篇文章主要介绍了PHP CURL 多线程操作代码实例,本文直接给出实现代码,需要的朋友可以参考下

使用方法:

$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);
   }
}

相关文章

  • WordPress过滤垃圾评论的几种主要方法小结

    WordPress过滤垃圾评论的几种主要方法小结

    不仅是中文的,WordPress用户经常还会受到英文日文等各种国外垃圾评论的骚扰,这里我们就来看一下WordPress过滤垃圾评论的几种主要方法小结:
    2016-07-07
  • 教你php如何实现验证码

    教你php如何实现验证码

    这篇文章教大家php如何实现验证码,验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • PHP实现的多彩标签效果代码分享

    PHP实现的多彩标签效果代码分享

    这篇文章主要介绍了PHP实现的多彩标签效果代码分享,经常可以看到一些博客中的标签(TAGS)页面是彩色的效果展现,本文就给出了实现这个功能的PHP代码,需要的朋友可以参考下
    2014-08-08
  • php gzip压缩输出的实现方法

    php gzip压缩输出的实现方法

    本篇文章介绍了,在php中gzip压缩输出的实现方法。需要的朋友参考下
    2013-04-04
  • PHP验证终端类型是否为手机的简单实例

    PHP验证终端类型是否为手机的简单实例

    下面小编就为大家带来一篇PHP验证终端类型是否为手机的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • smarty简单应用实例

    smarty简单应用实例

    这篇文章主要介绍了smarty简单应用实例,简单介绍了smarty中金沙国际官网查询、数组遍历及调用模板显示数据的相关技巧,简单易懂,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • 微信支付PHP SDK —— 公众号支付代码详解

    微信支付PHP SDK —— 公众号支付代码详解

    这篇文章主要介绍了微信支付PHP SDK 公众号支付代码详解方法的相关资料,需要的朋友可以参考下
    2016-09-09
  • Laravel5.5中利用Passport实现Auth认证的方法

    Laravel5.5中利用Passport实现Auth认证的方法

    Laravel5.3 开始使用Passport作为API授权,Passport 是基于 OAuth2 的,下面这篇文章主要给大家介绍了关于Laravel5.5中利用Passport实现Auth认证的方法,文中通过示例代码介绍介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • PHPMYADMIN导入数据最大为2M的解决方法

    PHPMYADMIN还原金沙国际官网的时候上传的最大限制:2,048 KB,金沙国际官网稍微大一些就无法处理,要么使用其他的备份还原工具如帝国备份王,要么就分卷导出,那么有没有办法还使用PHPMYADMIN来处理呢
    2012-04-04
  • YII Framework教程之异常处理详解

    YII Framework教程之异常处理详解

    这篇文章主要介绍了YII Framework教程之异常处理,结合实例形式详细分析了Yii框架异常处理机制的原理,使用方法与相关注意事项,需要的朋友可以参考下
    2016-03-03

最新评论