通过 Xsendfile 在下载文件中设置速度限制
Make Speed Limit In download file by Xsendfile
在 Xsendfile 中有限制下载速度的选项吗?
我想通过 Xsendfile
进行速度限制和连接限制
在强制下载 Xsendfile ( fread() ) 之前,我通过以下代码限制了速度:
if ($speed > 0 && ($this->bandwidth > $speed*$packet*1024))
{
sleep(1);
$packet++;
}
但是在 Xsendfile 中我不能用这种方式控制速度!
我还可以通过 Accept-Ranges header 激活或停用恢复,但我不能在 xsendfile 中做到这一点!
X-Sendfile 将数据传输卸载到 Linux 内核,后者将数据从文件直接发送到网络。这避免了必须将文件的数据复制到用户 space 内存中,因此使用更少 CPU。由于数据不通过任何用户 space 进程,因此无法手动限制它。
您可以通过流量整形来限制带宽,但这是一个系统配置问题,因此这里离题了。关于 serverfault 有很多问题,例如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(参见 "Benefits")。
在 Xsendfile 中有限制下载速度的选项吗? 我想通过 Xsendfile
进行速度限制和连接限制在强制下载 Xsendfile ( fread() ) 之前,我通过以下代码限制了速度:
if ($speed > 0 && ($this->bandwidth > $speed*$packet*1024))
{
sleep(1);
$packet++;
}
但是在 Xsendfile 中我不能用这种方式控制速度!
我还可以通过 Accept-Ranges header 激活或停用恢复,但我不能在 xsendfile 中做到这一点!
X-Sendfile 将数据传输卸载到 Linux 内核,后者将数据从文件直接发送到网络。这避免了必须将文件的数据复制到用户 space 内存中,因此使用更少 CPU。由于数据不通过任何用户 space 进程,因此无法手动限制它。
您可以通过流量整形来限制带宽,但这是一个系统配置问题,因此这里离题了。关于 serverfault 有很多问题,例如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(参见 "Benefits")。