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运行环境配置的详解
Jun 04 PHP
CentOS安装php v8js教程
Feb 26 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
Laravel 5.3 学习笔记之 错误&日志
Aug 28 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
详解yii2实现分库分表的方案与思路
Feb 03 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 PHP
PHP之header函数详解
Mar 02 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上传图片、删除图片实现代码
2010/05/12 PHP
php笔记之常用文件操作
2010/10/12 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
koa源码中promise的解读
2018/11/13 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
python中assert用法实例分析
2015/04/30 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
python实现简单遗传算法
2018/03/19 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
财务方面个人工作的自我评价
2013/12/28 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
装饰活动策划方案
2014/02/11 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL