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+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
php $_SERVER当前完整url的写法
Nov 12 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
php获取json数据所有的节点路径
May 17 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
PHP中的Iterator迭代对象属性详解
Apr 12 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
php的无刷新操作实现方法分析
Feb 28 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图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
yii的CURD操作实例详解
2014/12/04 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
PHP7内核之Reference详解
2019/03/14 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JS location几个方法小姐
2008/07/09 Javascript
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
详解webpack2异步加载套路
2018/09/14 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
python用户管理系统
2018/03/13 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
python使用turtle库绘制时钟
2020/03/25 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
生物技术研究生自荐信
2013/11/12 职场文书
小学端午节活动方案
2014/03/13 职场文书
论文诚信承诺书
2014/05/23 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
欢送会主持词
2015/07/01 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android