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动态生成VRML网页
Oct 09 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
PHP foreach循环使用详解与实例代码
May 08 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
那些年一起学习的PHP(二)
Mar 21 PHP
PHP中数组定义的几种方法
Sep 01 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 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实现与ASP Banner组件相似的类
2006/10/09 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
学习Vue组件实例
2018/04/28 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
Django 表单模型选择框如何使用分组
2019/05/16 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
QML实现钟表效果
2020/06/02 Python
基于python实现操作git过程代码解析
2020/07/27 Python
8种常用的Python工具
2020/08/05 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
作为网站管理者应当如何防范XSS
2014/08/16 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
少年闰土教学反思
2014/02/22 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
踏青活动策划方案
2014/08/19 职场文书
实习协议书范本
2014/09/25 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
springboot读取resources下文件的方式详解
2022/06/21 Java/Android
MySQL事务的隔离级别详情
2022/07/15 MySQL