Я использовал следующий код для генерации zip
// push to download the zip header('Content-type: application/zip'); header('Content-Disposition: attachment; filename="'.$zip_name.'"'); readfile($zip_name);
этот код работает нормально, но по неизвестным причинам не работал, пока я не попытался
// push to download the zip header('Content-type: application/zip'); header('Content-Disposition: attachment; filename="'.$zip_name.'"'); echo file_get_contents($zip_name);
Мне интересно узнать, что происходит в обоих случаях
Readfile будет считывать файл непосредственно в выходной буфер, а файл_get_contents будет загружать файл в память, когда вы эхо-результат, данные копируются из памяти в выходной буфер, эффективно используя в 2 раза память readfile.