PHPExcel - запись / добавление кусками - PullRequest
4 голосов
/ 16 марта 2012

Я использую среду PHPExcel, чтобы попытаться выписать очень большой документ Excel из запроса MySQL.

Все работает нормально, пока я не достигну отметки 5000 строк (или около того), где страница помечается ошибкой:

Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate yyy bytes) in zzz on line aaa

Я знаю, что это задокументировано, и я скорректировал распределение памяти на сервере, но, тем не менее, я все еще бью потолок. Я также пытался отключить форматирование, но в действительности оно мне понадобится.

Так есть ли способ писать небольшими порциями или добавлять в документ Excel, чтобы я не исчерпал распределение памяти? Я имею в виду, что на странице написано 1000 строк, затем перенаправить на себя и обработать следующие 1000, используя GET для отслеживания. Например:

index.php?p=0

затем перенаправить на

index.php?p=1000,

Но я не могу найти способ добавить к существующему документу, не открывая все это.

1 Ответ

3 голосов
/ 16 марта 2012

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

Если вам необходимо минимизировать использование памяти, какой метод кэширования ячеек вы используете?Кэширование ячеек медленнее, но может сэкономить значительные объемы памяти.

...