Я выполняю SELECT в базе данных, которая возвращает любое количество строк, может быть несколько или несколько (один миллион +), эти строки должны войти в CSV-файл с первым заголовком строки.
Я знаю два способа экспорта CSV-файлов с PHP: использование выходного буфера php://output
или создание временного файла, подача его пользователю, а не удаление.
Какой способ лучше, зная, что это небольшой файл или очень большой? Рассмотрим ограничение памяти PHP (в php.ini), время ожидания запроса и т. Д.
Это зависит от ситуации.
Используйте выходной буфер, когда вы знаете, что файл не смехотворно большой, и когда это загрузка, которая часто встречается.
Когда у вас есть что-то большое, которое будет загружено большое количество раз (одновременно), записать его в файл, возможно, лучше осветлить нагрузку на вашу базу данных и сайт.
Использование временного файла в случае, если у вас есть большой файл, является единственным хорошим вариантом.
Я думаю, что ответ довольно очевиден: напишите непосредственно на php://output
. Это то же самое, что и echo ..
; вывод будет отправлен клиенту более или менее напрямую. Он может или не может быть буферизирован бит, но если у вас нет явной буферизации вывода, или ваш веб-сервер имеет смехотворно большой буфер, он отправит его прямо. «Отправка файла» (предположительно через readfile
) передаст данные, хотя тот же выходной буфер, но будет намного сложнее и подвержен ошибкам.