php рендеринг большого zip-файла – достигнут предел памяти

Я пытаюсь сделать zip-файл в php. Код:

header('Content-Type: application/zip'); header('Content-Length: ' . filesize($file)); header('Content-Disposition: attachment; filename="file.zip"'); 

Загруженный файл содержит всего несколько байтов. Это сообщение об ошибке:

<br /> <b>Fatal error</b>: Allowed memory size of 16777216 bytes exhausted (tried to allocate 41908867 bytes) in <b>/var/www/common_index/main.php</b> on line <b>217</b><br />

Я не хочу увеличивать memory_limit в php.ini. Каковы альтернативные способы правильного отображения больших zip-файлов без использования глобальных настроек?

    Поток загрузки, поэтому он не задыхается от памяти. Крошечный пример:

     $handle = fopen("exampe.zip", "rb"); while (!feof($handle)) { echo fread($handle, 1024); flush(); } fclose($handle); 

    Добавьте правильные выходные заголовки для загрузки, и вы должны решить проблему.

    PHP на самом деле обеспечивает простой способ вывода двоичного файла непосредственно в Apache без его скопирования в память сначала с помощью функции readfile() :

     header('Content-Type: application/zip'); header('Content-Length: ' . filesize($file)); header('Content-Disposition: attachment; filename="file.zip"'); readfile('file.zip');