我写了一个php脚本,可以帮助限制下载文件的速度和连接。我用了fopen()
,fseek()
这样的东西:
$f = fopen($file, 'rb');
if($f){
fseek($f,$start);//$start extracted from $_SERVER['HTTP_RANGE']
while(!feof($f)){
echo fread($f,$speed);//$speed is bytes per second
flush();
ob_flush();
sleep(1);
}
fclose($f);
}
下载过程可能需要几个小时才能完成,整个文件是否在内存中直到下载结束? 以及如何优化它?
不,fread
使用内部缓冲区来流式传输数据(默认为 8KB),因此实际上只有文件的一小部分驻留在内存中。