процесс PHP - один за другим - имитация потоков - PullRequest
0 голосов
/ 11 октября 2010

У меня есть функция генерации отчетов.Экспорт в CSV или TXT.Для каждого месяца это будет 25000 записей в каждой строке с 55 столбцами.Ежегодно это будет более 300000!я пытаюсь добавить ограничение памяти, но я не думаю, что это хорошо !!В любом случае сейчас его 128M.

Мое ожидание

Я разделю выбранный пользователем диапазон дат на диапазон 25 дней или 30. Я буду запускать выборку данных в течение 25 дней, затем напишу CSV,Затем принесите следующие 25000, напишите это.вот так.

Как мне это сделать?

для извлечения я использую функцию $result= fetchRecords();

Для написания CSV, я передаю этот массив $ result для просмотра страницыи зацикливание и разделение запятыми я печатаю.

Так в контроллере это будет $template->records=$result;

Если я сделаю это в цикле for

for(){
  $result= fetchRecords();
  $template->records=$result;
}

Я неХинк это будет работать.

Как это сделать?выполнить fetch.write, затем извлечь, затем написать.

Не могли бы вы предложить лучший способ реализовать это в PHP, сохраняя его в пределе памяти?

1 Ответ

0 голосов
/ 13 октября 2010

Я извлекал огромные данные из базы данных в массив.Затем снова зациклите этот массив для записи в csv или текст. Это действительно убивает память.

Теперь, когда я выбираю данные из базы данных, в этом же цикле я записываю в файл.Нет использования массива.Большая разница.

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

Сейчас я загружаю CSV размером 25 МБ.:) Я нарушаю Excel ... так как он превышает 65550 записей.:)

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...