当我们使用fopen()命令时,php加载整个文件

时间:2012-05-30 15:02:06

标签: php fopen

我编写了一个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);
}

下载过程可能需要几个小时才能完成,整个文件是否在内存中直到下载结束?以及我如何优化它?

1 个答案:

答案 0 :(得分:6)

不,fread使用内部缓冲区来传输数据(默认为8KB),因此只有很小一部分文件实际驻留在内存中。