【问题标题】:Make Speed Limit In download file by Xsendfile通过 Xsendfile 在下载文件中设置速度限制
【发布时间】:2016-02-28 09:59:44
【问题描述】:

在 Xsendfile 中是否有任何限制下载速度的选项? 我想通过 Xsendfile 进行速度限制和连接限制

在 Xsendfile 强制下载 ( fread() ) 之前,我通过此代码限制速度:

if ($speed > 0 && ($this->bandwidth > $speed*$packet*1024))
            {
                sleep(1);
                $packet++;
            }

但在 Xsendfile 中我无法以这种方式控制速度!

我还可以通过 Accept-Ranges 标头激活或停用恢复,但我不能在 xsendfile 中这样做!

【问题讨论】:

    标签: php apache x-sendfile


    【解决方案1】:

    X-Sendfile 将数据传输卸载到 Linux 内核,Linux 内核将数据从文件直接发送到网络。这避免了将文件的数据复制到用户空间内存中,因此使用更少的 CPU。由于数据不通过任何用户空间进程,因此无法手动对其进行限制。

    您可以通过流量整形来限制带宽,但这是一个系统配置问题,因此不在此处讨论。关于服务器故障有很多问题,例如https://serverfault.com/questions/174010/limit-network-bandwith-for-an-iphttps://serverfault.com/questions/191560/how-can-i-do-traffic-shaping-in-linux-by-ip

    至于文件范围,mod_xsendfile supposedly already takes care of that(参见“优点”下)。

    【讨论】:

    • 所以php没办法处理?
    • 没有。当您使用sendfile时,用户空间进程对数据的传输方式没有发言权
    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2016-02-03
    • 1970-01-01
    • 2011-04-29
    • 2016-04-20
    相关资源
    最近更新 更多