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数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
php htmlentities和htmlspecialchars 的区别
Aug 18 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 PHP
PHP7修改的函数
Mar 09 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代码重构工具推荐
2014/10/14 PHP
PHP队列用法实例
2014/11/05 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
js function使用心得
2010/05/10 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
js简单抽奖代码
2015/01/16 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
AngularJS 所有版本下载地址
2016/09/14 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
原生js调用json方法总结
2018/02/22 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
Python 导入文件过程图解
2019/10/15 Python
简单了解Django项目应用创建过程
2020/07/06 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
python中的unittest框架实例详解
2021/02/05 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
双语教学实施方案
2014/03/23 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL