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 相关文章推荐
?生?D片??C字串
Dec 06 PHP
php调用mysql存储过程
Feb 14 PHP
初学CAKEPHP 基础教程
Nov 02 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
php全排列递归算法代码
Oct 09 PHP
PHP的基本常识小结
Jul 05 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 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集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
学习ExtJS form布局
2009/10/08 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
js同源策略详解
2015/05/21 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
python实现C4.5决策树算法
2018/08/29 Python
python匿名函数的使用方法解析
2019/10/10 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python sorted方法和列表使用解析
2019/11/18 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
美国购物网站:Clickhere2shop
2021/01/28 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
JSF界面控制层技术
2013/06/17 面试题
自我鉴定书范文
2013/10/02 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
知识竞赛主持词
2014/03/26 职场文书
消防安全承诺书
2014/05/22 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
演讲开场白和结束语
2015/05/29 职场文书
音乐剧猫观后感
2015/06/04 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL