/*

* 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 CURL 多线程操作代码实例相关推荐

  1. oss多线程 上传_Jmeter测试多线程并发请求 与 OSS 对象存储 测试报告

    1.测试文件夹包含特殊字符 出现重大BUG问题:  \\ 和 /  运用到Key中  文件夹不能删除 解决方案:应该在根源上传之前进行   规避  出现这样的字符在一起 直接抛出错误信息给用户 2.测 ...

  2. 微信小程序多图上传带进度提示的代码实例

    实例名称:多图上传进度提示 适用范围:微信小程序 基础库1.0.1及以上 page.js中书写代码片段如下 Page({data:{src:''},//上传事件upImage(e){wx.choose ...

  3. C++ vs2017 - libcurl - http请求 代码大全(请求数据,上传下载文件,多线程上传下载文件)

    在网上搜寻各种libcurl的用法,将代码集合于此! 目录 一.配置curl项目 二.Curl 请求参数 1. CURLOPT_POST 2. CURLOPT_URL 3. CURLOPT_HTTPH ...

  4. oss多线程 上传_解读阿里云oss-android/ios-sdk 断点续传(多线程)

    摘要: oss sdk 断点续传功能使用及其相关原理 前言 移动端现状 随着移动端设备的硬件水平的不断提高,如今的cpu,内存等方面都大大的超过了一般的pc电脑,因此在现今的程序中,合理的使用多线程去 ...

  5. oss多线程 上传_oss-android/ios-sdk 断点续传(多线程)

    oss-android/ios-sdk 断点续传 前言 移动端现状 随着移动端设备的硬件水平的不断提高,如今的cpu,内存等方面都大大的超过了一般的pc电脑,因此在现今的程序中,合理的使用多线程去完成 ...

  6. 发邮件窗体【支持编辑邮件模板,使用wse多线程上传附件及发邮件(带附件)】以及在服务器端自动发邮件...

    这是前段时间做的一个邮件客户端,支持自定义模板(模板是内置的,固定好了)           其中配置模板的xml <?xml version="1.0" encoding= ...

  7. php怎么上传函数,PHP单文件上传原理及上传函数的封装操作示例

    搜索热词 @H_404_0@本文实例讲述了PHP单文件上传原理及上传函数的封装操作.分享给大家供大家参考,具体如下: @H_404_0@表单: @H_404_0@0.PHP: 无标题文档 请选择您要上 ...

  8. 前端(react)上传到阿里云OSS存储 实例

    需求背景 由于现有的后台管理系统,上传的视频越来越大,加上上传视频较慢,后端小哥提出直接从前端上传视频或者其他文件到阿里云OSS存储. 阿里云OSS 阿里云OSS文档介绍,这里不做过多赘述 安装 原本 ...

  9. java代码上传exel,excle上传服务器并解析!求excel上传到服务器的java代码

    如何将数据上传给服务器 医嘱以形式发送过来? 办法有很多,最简单的,就是在机器里,建立2个数据库A,B,假如A是外务器. 在数据库中,以A数据库做发布,让B数据库订阅,弄好以后,A数据库的数据就会自动 ...

最新文章

  1. ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展
  2. 每日一皮:宿舍阿姨眼中的单身狗...
  3. lua 访问oracle,lua语言数据库访问 - Lua教程
  4. Linux运行Django项目远程访问时报错:Invalid HTTP_HOST header: '***.***.*.*:8000'.
  5. centos内核编译与其签名机制
  6. 爬取三千条数据需要多久_存储-性能,IOPS,带宽,吞吐量,1TB数据需要多久写完...
  7. 【K8S】Docker向私有仓库拉取/推送镜像报错(http: server gave HTTP response to HTTPS client)
  8. 基于javaEE技术的课程设计管理系统设计与实现
  9. 【整理】更改MSSQL默认字符集
  10. 零基础转行如何准备一场软件测试面试
  11. 32个参数累加_「机械设计教程」滚珠丝杠选型过程中考虑的9个参数
  12. python绘制散点图,非常全,非常详细(已验证)
  13. 关于微信8.0.0以下版本登录版本验证的解决办法
  14. 微信小程序项目实例SSM在线考试管理系统+后台
  15. 开源免费 低代码平台开源_行动透明:免费代码营现已开源
  16. 如何自己组装电脑(从配件到整机)来省下一大笔钱
  17. 免费css代码下载-Free Css Templates
  18. Visual SVN Server的下载和使用
  19. 5-14 电话聊天狂人 (25分)/PTA
  20. 【LoVissy学习笔记】用Python3.82自动发送邮件。QQ邮箱

热门文章

  1. mysql和oracle 开源_MySQL和oracle比较
  2. Linux redis故障,linux – Redis Stall故障排除
  3. matlab调用ANSYS--------2
  4. OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()
  5. VC创建DLL动态链接库及其调用
  6. Python数据类型-元组类型
  7. Python语言数据类型-----数字和字符串
  8. Google Pixel 解锁BL、刷入Twrp、magisk Root、安装 Xposed
  9. Scrapy 爬虫教程导航
  10. Python 爬虫框架 - PySpider