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


Make Speed Limit In download file by Xsendfile

有什么选项可以限制Xsendfile中的下载速度吗?我想通过Xsendfile进行速度限制和连接限制

在Xsend文件生效下载(fread())之前,我通过以下代码进行速度限制:

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

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

我也能够通过接受范围标头激活或停用恢复,但我不能在 xsendfile 中做到这一点!

X-Sendfile 将数据传输卸载到 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应该已经处理好了(请参阅"好处"下)。