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中$_SERVER的详细参数与说明介绍
Oct 26 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
php银联网页支付实现方法
Mar 04 PHP
PHP实现通过get方式识别用户发送邮件的方法
Jul 16 PHP
Symfony2之session与cookie用法小结
Mar 18 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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 form 表单传参明细研究
2009/07/17 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
javascript 面向对象继承
2009/11/26 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
urllib2自定义opener详解
2014/02/07 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python读取properties配置文件操作示例
2018/03/29 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Python 合并拼接字符串的方法
2020/07/28 Python
Django实现随机图形验证码的示例
2020/10/15 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
会计顶岗实习心得
2014/01/25 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书