https://norm-nois.com/blog/archives/1729
file_get_contentsは、ファイルを変数に読み込む。
filereadは、PHPリファレンスに「readfile() 自体にはメモリに関する問題はなく、 巨大なファイルを送ってもかまいません。」という注意書きがる。
巨大なファイルをダウンロードさせるときに一番良いのは
$fp = fopen($url, 'rb'); while(!feof($fp)) { $buf = fread($fp, 1048576); echo $buf; ob_flush(); flush(); } fclose($fp);
のようにある程度の量ずつ書き出していく方法だと思われる。