2016-02-28 66 views
0

是否有限制Xsendfile下载速度的选项? 我要让限速&连接限制通过Xsendfile限制速度在Xsendfile的下载文件中

Xsendfile之前生效下载(FREAD())我用这个代码做限速:

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

但Xsendfile我无法控制速度。在这种办法 !

此外,我能够通过Accept-Ranges标题来激活或停用resume,但我无法在xsendfile中执行此操作!

回答

0

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

您可以通过流量整形来限制带宽,但这是一个系统配置问题,因此在这里是无关紧要的。在这方面有很多关于serverfault的问题,例如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(参见“优点”)。

+0

所以没有办法通过PHP来处理它? – jasone

+0

没有。当你使用'sendfile'时,用户空间进程不知道如何传输数据 – Joni