У меня есть функция генерации отчетов. Экспорт в csv или txt. За каждый месяц будет 25000 записей в каждой строке с 55 столбцами. За год это будет более 300 000 !! Я пытаюсь добавить ограничение памяти, но я не думаю, что это хорошо! Во всяком случае теперь его 128M.php process - один за другим - имитирующая резьба
Мои ожидания
Я разделится диапазон дат, выбранный пользователем в диапазоне от 25 дней или 30 я побегу выборки данных в течение 25 дней, а затем записать CSV. Затем заберите следующий 25000, напишите это. как это.
Как я могу достичь этого?
для выборки я использует функцию $result= fetchRecords();
Для написания CSV, я передаю этот массив $ результата для просмотра страницы и перекручивания и отделяя запятые утра печати.
Так что в контроллере будет $template->records=$result;
Если я сделать это в цикле
for(){
$result= fetchRecords();
$template->records=$result;
}
Я не Хинк это будет работать.
Как это сделать? выполните fetch.write, затем выберите, затем напишите.
Можете ли вы предложить лучший способ реализовать это в PHP, сохраняя его в памяти?
Если это исторические данные, вы подумали о подготовке/кешировании отчетов? Если пользователи не могут запрашивать случайные отчеты, нет необходимости обрабатывать все строки снова и снова .... – Wrikken
Это похоже только на исторические данные. Как кэширование полезно? – zod
Если вы просто готовы из базы данных и пишите в CSV, вы можете рассмотреть другой язык. PHP - это * не * отличный язык для обработки текста. – meagar