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实现的获取URL信息的类
Jan 02 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php中的curl使用入门教程和常见用法实例
Apr 10 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
Laravel搭建后台登录系统步骤详解
Jul 26 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP常见数组排序方法小结
Aug 20 PHP
php微信公众号开发之音乐信息
Oct 20 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python中DJANGO简单测试实例
2015/05/11 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
python计算日期之间的放假日期
2018/06/05 Python
python 文件转成16进制数组的实例
2018/07/09 Python
深入浅析Python传值与传址
2018/07/10 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
python在不同条件下的输入与输出
2020/02/13 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
如何一键升级Python所有包
2020/11/05 Python
Python修改DBF文件指定列
2020/12/19 Python
Exception类的常用方法
2012/06/16 面试题
问卷调查计划书
2014/01/10 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
2014年减负工作总结
2014/12/10 职场文书
国际贸易实训总结
2015/08/03 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
mysql函数全面总结
2021/11/11 MySQL
什么是Python装饰器?如何定义和使用?
2022/04/11 Python