博客
关于我
使用curl控制下载速度
阅读量:685 次
发布时间:2019-03-17

本文共 1506 字,大约阅读时间需要 5 分钟。

速度控制

在实际项目中,为了确保文件下载速度与服务器资源配置相匹配,我们可以通过CURL函数设置下载速率限制。以下主要分为PHP代码和命令行两种实现方式。

PHP代码实现

function http_request($URI) {    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $URI);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    // 速度控制    $speed = 100000; // 对应100k byte    curl_setopt($ch, CURLOPT_MAX_RECV_SPEED_LARGE, $speed);    $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);

CURL命令行实现

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

说明

  • CURL_MAX_RECV_SPEED_LARGE参数:用于限制下载速度,单位为byte。如上例所示,设置为100000表示下载速度不超过100k byte。

  • 注意事项

    • 速度单位为byte,与bit不同档次,需注意转换。
    • 实际应用中,建议根据网络环境调整速率设定。
  • 下载速度测定

    为了验证上述速度控制设置的有效性,我们可以使用iftop工具监控网卡 下载速率。以下分别介绍PHP和命令行方式的实现方法。

    PHP测定方式

    运行上述代码后,在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之间波动,符合预期控制。

    命令行测定方式

    在iftop界面查看如下记录:

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

    测定结果表明,下载速度在850kb~1.1M bit之间变化,与PHP实现相差不大。

    结论

  • 实现可行性:CURL工具支持速度控制,无论是在PHP编程还是命令行都能有效实现下载速率限制。

  • 精度考量:控制速度只能确保持均值附近的状态,个别时段可能出现明显波动。

  • 速率设定规律:较低速率会导致速度波动更大,因此建议根据实际需求合理调节。

  • 工具不同带来的影响:由于iftop等工具的不同,测试结果可能存在差异,需确认使用的工具及对应的参数说明。

  • 综上所述,合理设置下载速度控制能够有效管理资源分配,但需综合考虑实际应用环境进行调整。

    转载地址:http://giwhz.baihongyu.com/

    你可能感兴趣的文章
    Netty相关
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>
    NetworkX系列教程(11)-graph和其他数据格式转换
    查看>>
    Networkx读取军械调查-ITN综合传输网络?/读取GML文件
    查看>>
    Net与Flex入门
    查看>>
    net包之IPConn
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS共享文件系统搭建
    查看>>
    nfs复习
    查看>>
    NFS网络文件系统
    查看>>
    nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
    查看>>
    ng 指令的自定义、使用
    查看>>
    Nginx
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>
    Nginx Location配置总结
    查看>>