通过Xsendfile在下载文件中设置速度限制

时间:2016-02-28 09:59:45

标签: php apache x-sendfile

在Xsendfile中是否有限制下载速度的选项? 我想制作速度限制&连接限制由Xsendfile

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

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

但是在Xsendfile中我不能以这种方式控制速度!

此外,我可以通过Accept-Ranges标头激活或取消激活恢复,但我无法在xsendfile中执行此操作!

1 个答案:

答案 0 :(得分:0)

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

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

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