2010-10-11 3 views
0

У меня есть функция генерации отчетов. Экспорт в 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, сохраняя его в памяти?

+0

Если это исторические данные, вы подумали о подготовке/кешировании отчетов? Если пользователи не могут запрашивать случайные отчеты, нет необходимости обрабатывать все строки снова и снова .... – Wrikken

+0

Это похоже только на исторические данные. Как кэширование полезно? – zod

+0

Если вы просто готовы из базы данных и пишите в CSV, вы можете рассмотреть другой язык. PHP - это * не * отличный язык для обработки текста. – meagar

ответ

0

Я собирал огромные данные из db в массив. Затем снова запустите этот массив, чтобы записать в csv или text.That действительно убивал память.

Теперь, когда я получаю данные из db, в том же цикле я пишу в файл. Использование массива. Большая разница.

PHP может улучшить экспорт в csv или текст. PHP - отличный язык.

Теперь я загружаю csv из 25 мб. :) i break the excel .., поскольку он превышает 65550 записей. :)

Более чем достаточно для меня.

Итак, извлеченный урок - не используйте массивы для такого типа хранения огромных данных.

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