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

相关文章

  • ThinkPHP5.0 图片上传生成缩略图实例代码说明

    ThinkPHP5.0 图片上传生成缩略图实例代码说明

    这篇文章主要介绍了ThinkPHP5.0 图片上传生成缩略图实例代码说明,需要的朋友可以参考下
    2018-06-06
  • thinkPHP中钩子的使用方法实例分析

    thinkPHP中钩子的使用方法实例分析

    这篇文章主要介绍了thinkPHP中钩子的使用方法,结合实例形式分析了thinkPHP钩子的创建、添加、使用等相关操作技巧与注意事项,需要的朋友可以参考下
    2017-11-11
  • 在SAE上搭建最新wordpress的方法

    在SAE上搭建最新wordpress的方法

    这篇文章主要介绍了在SAE上搭建最新wordpress的方法,需要的朋友可以参考下
    2014-12-12
  • Laravel中ServiceProvider使用场景示例详解

    Laravel中ServiceProvider使用场景示例详解

    这篇文章主要为大家介绍了Laravel中ServiceProvider使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • php测试程序运行速度和页面执行速度的代码

    php测试程序运行速度和页面执行速度的代码

    microtime()函数返回当前 Unix 时间戳的微秒数。用于检测程序执行时间的函数,也是PHP内置的时间函数之一,在PHP中可以用于对程序执行时间的判断,以及相同功能函数的执行效率高低快慢的判断。
    2022-12-12
  • phpStudy 2016 使用教程详解(支持PHP7)

    phpStudy 2016 使用教程详解(支持PHP7)

    对于php新老手来说,WINDOWS下PHP环境配置是一件很困难的事。phpStudy 2016都是个理想选择,下面小编给大家分享phpStudy 2016 使用教程详解(支持PHP7),感兴趣的朋友一起看看吧
    2017-10-10
  • php mysql 封装类实例代码

    php mysql 封装类实例代码

    这篇文章主要介绍了php mysql 封装类实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 微信自定义菜单的处理开发示例

    微信自定义菜单的处理开发示例

    在微信5.0以前,自定义菜单是作为一种内测资格使用的,只有少数公众帐号拥有菜单,因此出现很多企业为了弄到菜单不惜重金求购。现如今,一大批帐号从订阅号转为服务号,很多都是奔着自定义菜单去的。今天我们就来简单研究下微信自定义菜单的处理。
    2015-04-04
  • php冒泡算法实现倒序和正序排列的示例代码

    php冒泡算法实现倒序和正序排列的示例代码

    冒泡排序是一种简单的排序算法,其主要思想是比较相邻的两个元素,根据需要交换位置,将较大(或较小)的元素逐渐冒泡到数组的一端,从而实现排序,这篇文章主要介绍了php冒泡算法实现倒序和正序排列,需要的朋友可以参考下
    2023-11-11
  • apache php mysql开发环境安装教程

    apache php mysql开发环境安装教程

    这篇文章主要为大家详细介绍了apache php mysql开发环境安装教程,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论