DaiBu DaiBu - 6 months ago 10
PHP Question

What overhead is caused by echo + fread-ing a file for download?

If I have a php script that does nothing but the following...

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

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

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


...how much overhead is caused by accessing the script from a browser as opposed to simply accessing the actual file? Internally, is the entire file copied to some kind of buffer and then spit out again or is it nearly the same thing?

Answer

Yes, it's read into a buffer. It's essentially equivalent to:

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

You can use fpassthru() to send to the client without reading everything into a buffer at once.

fpassthru($file);
Comments