1. 速度控制

1.1 php代码方式

function http_request($URI)
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $URI);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//速度控制$speed = 100000;curl_setopt($ch, CURLOPT_MAX_RECV_SPEED_LARGE, 100000);$result = curl_exec($ch);if (!$result){echo curl_error($ch);return false;}curl_close($ch);return $result;
}$url = "http://toutiao.sogoucdn.com/ykvideo/20181130/0575139af28f38c336912739acf33a88.mp4";
$res = http_request($url);
file_put_contents("./video", $res);

说明:

  1. CURLOPT_MAX_RECV_SPEED_LARGE,即是控制下载速度的参数,数值单位为byte。上例中,我们期望的速度为100k(byte)。
  2. 网速其实指的是bit, 所以100k byte对应的网速是800k bit。 需要注意下这里的换算关系。

1.2 命令行方式

curl "http://toutiao.sogoucdn.com/ykvideo/20181130/0575139af28f38c336912739acf33a88.mp4" -o video --limit-rate 100k

说明:

  1. –limit-rate就是命令行curl控制速度的参数。
  2. 速度单位仍然是byte。

2. 速度测定

我们使用iftop对网卡的下载速度进行测定,以观测控速是否起到了应有的效果。不了解iftop的同学,可以点击这里。

2.1 php方式

运行1.1中的代码,我们在iftop中看到如下记录:

10.144.73.171 => 111.202.99.142                         6.56Kb  6.78Kb  6.76Kb<=                                        1.02Mb  1.00Mb  0.99Mb

平均下载速度在900kb~1.1M(bit)之间波动。

2.2 shell方式

iftop中看到记录如下:

10.144.73.171 => 111.202.99.191                         6.72Kb  6.59Kb  6.81Kb<=                                        1.04Mb  1.04Mb  1.04Mb

平均下载速度在850kb~1.1M(bits)之间波动。与代码方式基本一致。

3.3 结论

  1. 使用命令行curl ,和php curl均可对下载速度进行控制。
  2. 速度的控制并不能做到很精确,只能保证下载平均速度在预期值附近。实测中发现,个别时点可能会突破预期值很多。
  3. 设定的速率越低,速度波动会越大。比如限定速度为1k bit, 实际观察到的速度波动会在320b~50kb之间。显然波动高于上例中限定速率为800k bit的情况。
  4. 不同工具使用的单位不同, 注意byte与bit的转换。

使用curl控制下载速度相关推荐

  1. Linux下使用curl进行http请求(转)

    curl在Linux下默认已经安装,Windows需要自行安装. 下载地址:https://curl.haxx.se/download.html Windows离线版本:链接:http://pan.b ...

  2. 【Linux】一步一步学Linux——curl命令(193)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 curl命令是一个利用URL规则在shell终端命令行下工 ...

  3. Linux 命令(136)—— curl 命令

    文章目录 1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 1.命令简介 curl 命令是一个利用 URL 规则在 Shell 终端命令行下工作的文件传输工具.它支持文件的上传和下载, ...

  4. Linux curl 命令模拟 POST/GET 请求

    curl 命令,是一个利用URL规则在命令行下工作的文件传输工具. curl 支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具. 作为一款强力工具,curl支持包括HTTP ...

  5. Curl运维命令 - 日常用法总结

    在Linux系统中,curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载操作,是综合传输工具,习惯上称url为下载工具.下面就日常运 ...

  6. [Shell学习笔记] 命令行下的高级网络工具cURL命令

    原文: http://www.1987.name/365.html Linux curl命令是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯 ...

  7. libcurl下载限速编程调研

    目前的业务需求是, 要求下载过程中, 能够恰当控制下载速度? 如何实现? 我想到了libcurl中提供的下载限速选项.现在探讨如下. 我找到Ubuntu 14.04.01的iso大文件, 使用libc ...

  8. Shell脚本学习-阶段二十七-命令解释一

    文章目录-命令解释一 前言 as expr gcc gcov gdb indent ld ldconfig ldd make mktemp nm objdump perl php protoize u ...

  9. shell常用命令高级部分

    日志统计常用手法: awk '{print $1}' |sort -n |uniq -c |sort -nr|head -10 找第一列中,排序,再统计每种多少,排序反序,再取前10名.ifconfi ...

  10. qos 流控功能_怎么设置飞鱼星QoS流量控制中的传统流控

    飞鱼星Volans公司致力于提供智能易用的网络通讯产品与服务,其通过创新技术不断提升网络使用质量,那么你知道怎么设置飞鱼星QoS流量控制中的传统流控吗?下面是学习啦小编整理的一些关于怎么设置飞鱼星Qo ...

最新文章

  1. linux架构师高级系统调优策略
  2. 使用Python解析nginx日志文件
  3. Redis 数据同步机制分析
  4. Set集合以及HashSet、LinkedHashSet、TreeSet等讲解
  5. 阿里启动NASA计划创造新经济核心科技
  6. Preparing Cities for Robot Cars【城市准备迎接自动驾驶汽车】
  7. 类模板特化之经典(一)
  8. 组策略中分类别禁用设备驱动程序安装,可以用来禁用USB设备
  9. __asm__ __volatile__内嵌汇编用法简述
  10. 工业机器人维保调查表_《工业机器人系统集成及维护》课程建设调研报告
  11. python mysql实例_Python使用MySQL数据库的方法以及一个实例
  12. 排列组合 vs 全排列与指数
  13. 2021牛客寒假算法基础集训营2,签到题FHIJ
  14. 如何实现用Delphi访问Outlook Express的收发邮件箱中的邮件?
  15. shell 除法保留n位小数
  16. 洛谷p3764签到题3
  17. 企业邮箱哪个最好用?哪个企业邮箱更优惠?费用是多少?
  18. 虚拟机VMware安装苹果系统macOS,超级详细教程,附文件下载,真教程!!
  19. Zimbra部署https证书的操作方法
  20. 自动阅读 到底 能不能赚钱

热门文章

  1. Unity Bounds 边界框(包围盒)
  2. 以太坊白皮书(中文版)
  3. oracle数据库: ORA-01775: 同义词的循环链问题
  4. 503错误的原因和解决方法
  5. Linux下的常用软件集锦
  6. LINUX论坛快速搭建(小白版)
  7. 【论文笔记】Semantic Parsing on Freebase from Question-Answer Pairs
  8. python跳出双循环break图例
  9. win10除去桌面图标小箭头(绝对没有坑!!!)与 该文件没有与之关联的程序来执行该操作。。。
  10. 出租车收费管理系统(MyEclipse+Java)