2013-11-20 4 views
20

Я использовал следующий код для создания почтового индексаPHP ReadFile против file_get_contents

// 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); 

мне любопытно найти то, что происходит в обоих случаях

+0

Вы имели в виду 'file_get_contents'? –

+0

Что означает «не работает»? Вы пытались настроить отчет об ошибках на соответствующее значение и читать сообщения об ошибках/предупреждениях? – Jesse

+0

Да, я сделал это, и он показывал пустую страницу с единственным \ n – justnajm

ответ

36

Readfile будет считывать файл непосредственно в выходной буфер, а файл_get_contents будет загружать файл в память, когда вы эхо-результат да ta копируется из памяти в выходной буфер, эффективно используя в 2 раза память readfile.

+0

Да, это то, что мое наблюдение заключается в том, что readfile пытается выкинуть файл во время его создания, но file_get_contents ждут, пока он не будет успешно обработан. – justnajm

Смежные вопросы