在Xsendfile中是否有限制下载速度的选项? 我想制作速度限制&连接限制由Xsendfile
在Xsendfile强制下载之前(fread())我通过以下代码进行速度限制:
if ($speed > 0 && ($this->bandwidth > $speed*$packet*1024))
{
sleep(1);
$packet++;
}
但是在Xsendfile中我不能以这种方式控制速度!
此外,我可以通过Accept-Ranges标头激活或取消激活恢复,但我无法在xsendfile中执行此操作!
答案 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(参见“好处”下)。