Всем привет. Использую расширение https://github.com/moonlandsoft/yii2-phpexcel для экспорта excel. Выгружается 50К+

строк данных, выскакивает ошибка php memory_limit (недостаточно памяти для заполнения файла с таким большим кол-ом строк). Вопрос: Можно ли как-то с помощью этого расширения записывать данные "пакетами" (срезать их), то есть например записывать поочередно 5-10К строк и только потом давать ссылку на скачивание?

6 ответов

14 просмотров

Если есть возможность (ресурсов) то можешь использовать команду ini_set('memory_limit', '350M'); (вместо 350 мб выбирай то что нужно)

тоже была такая проблема, но при импорте. попробуй лучше Box\Spout, оно вообще не жрет память

Ruslan-Danilov Автор вопроса

заюзал box/spout, но странно, все равно память падает при записи в файл. Хотя по идеи не должна, т.к. это расширение память максимум в 3Мб юзает. Храню во временном файле $tempfile = tempnam(sys_get_temp_dir(), 'report_excel'); Попробую еще через поток. Если тысяча строк, то нормально сохраняет, а вот при 50К падает память

Ruslan Danilov
заюзал box/spout, но странно, все равно память пад...

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

Ruslan-Danilov Автор вопроса

да, прописал batch(1000), с ним память не падает. Спасибо.

Ruslan Danilov
да, прописал batch(1000), с ним память не падает. ...

Для очень больших объемов в итоге просто выгрузка в csv. Excel нормально с ты ней работает и всех устроило.

Похожие вопросы

Обсуждают сегодня

Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Всем привет. Нужна платная консультация от тех, кто сталкивался с октябрём в кластере или шарит оч хорошо в цмс. Проблема следующая: после переноса в кластер октябрь начал ...
wl
8
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
а я честно сказать не понимаю - нахуя идти учиться на вышку или еще куда-либо и при этом нихуя не делать, типа зачем ? просто корку получить, а нахуй она нужна тогда ?
Eugene Неелов
7
А сколько часов мак держит зарядку в рабочем режиме? Например мой Redmi Mac (просто наклейка от айфона осталась, налепил) по началу держал часов 5 с парой открытых штормов и ...
Ross
8
Ребят, а вот такой вопрос: если я владелец бота анонимного чата, в котором, например, имеются подписки, используя какую-нибудь ЮКассу (или тому подобное, в общем с налогами, в...
Eugene Неелов
8
Ребят, было ли у вас так, что переменные в WebApp —tg-viewport-height, —tg-viewport-stable-height после метода expand не обновляются, а остаются в размерах, как было до expand...
Black
3
зараз якщо створити файл core/custom/define.php з текстом <?php const NO_SESSION = true; можна позбутися сесійних кукі (що зручно, щоб не показувати людям банери про збір та в...
Artur Kyryliuk
1
Карта сайта