echo + fread一个文件下载会导致什么开销?

时间:2016-05-16 20:36:04

标签: php file

如果我有一个PHP脚本,除了以下内容之外什么都不做......

$file = fopen($path, "r");
flock($file, LOCK_SH);

echo fread($file, filesize($path));

flock($file, LOCK_UN);
fclose($file);

...从浏览器访问脚本导致的开销是多少,而不是简单地访问实际文件?在内部,是将整个文件复制到某种缓冲区然后再吐出来还是几乎一样?

1 个答案:

答案 0 :(得分:1)

是的,它被读入缓冲区。它基本上等同于:

$temp = fread($file, filesize($path));
echo $temp;

您可以使用fpassthru()发送给客户端,而无需立即将所有内容都读入缓冲区。

fpassthru($file);