在PHP中限制下载速度

Har*_*ant 0 php bandwidth download

我尝试过在谷歌搜索中找到的基本版本,甚至尝试自己编写一个,但是我一直遇到问题.它似乎下载内容服务器端或其他东西,然后将其推送给已经下载的用户.它将打开下载页面并花费大约10秒钟进行下载,然后将该文件完整地提供给用户,这使得它看起来像不下载.

我想知道是否有任何类已经写入来限制下载速度,或者我如何解决这个问题.

我现在有这个;

header("Content-type: application/force-download");
    header("Content-Transfer-Encoding: Binary");
    header("Content-length: ".filesize("uploads/$filename"));
    header("Content-disposition: attachment; filename=\"$origname");
    readfile("uploads/$filename");
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tim*_*lla 5

@set_time_limit(0); // don't abort if it takes to long
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize("uploads/".$filename));
header('Content-disposition: attachment; filename="'.$origname.'"');
$perSecond = 5; // 5 bytes per second

$file = fopen("uploads/".$filename, 'r');
while(!feof($file)) {
    echo fread($file, $perSecond);
    flush();
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

这将向用户发送具有限制下载速度的文件.它的工作方式基本如下:

  • 打开一个文件
  • 循环直到我们结束
  • echo X字节
  • 将输出刷新到用户
  • 睡一秒钟.