Как правильно отдавать большие файлы частями
Когда требуется отдать клиенту файл большого размера, echo filegetcontents('filename') может вызвать ошибку, поэтому файл нужно отдавать порциями. Этот пример показывает, как это можно сделать.
<?php
$file = 'big_file.mpg';
// Заголовки, которые расскажут браузеру о том, что это за файл
header("Content-type: audio/mpeg");
header("Content-Disposition: attachment; filename=music.mp3");
header("Content-Length: " . filesize($file));
$f = fopen($file, 'rb'); // Открываем файл
while (!feof($f)) { // И пока он не кончится
echo fread($f, 1024 * 8); // отправляем по кусочкам
}
fclose($f);