someoneisusingmyusualnick
@someoneisusingmyusualnick

Оптимизация генерации excel из php?

Суть.
Нужно создавать отчет в Excel.
Использую phpexcel.
Со своей задачей он справляется но…
Excel файл надо генерить из созданного сторонним кодом CSV, а потом еще добавить пару вкладок, разукрасить цветами и т.п.
Собственно, используя либу выше все в целом просто.
Но как написано на у них на сайте на 1 ячейку файла надо ~1кб памяти. Сейчас у меня получается уже 1.5гб(выставлял в php.ini соотв-й лимит). В перспективе — данных будет еще больше. На текущем дев сервере всего 3гб оперативы(sic!). И по опыту работы с заказчиком есть подозрение что этот дев сервер, потом станет продакшеном.
Встроенные варианты кеширования в память(мемкеш етк) не подходят по скольку все-равно не хватит памяти.
В последней версии появилось кеширование в SQLite — пробовал, Отчет сгенерился за 70 минут.
Учитывая, что генерация отчетов — корень всего функционала это не приемемо ни разу — надо что бы оно генерило побыстрее еще и для кучи пользователей одновременно.

Оптимизировать в коде особенно нечего — все выполняется быстро, пока не доходит именно до генерации файла.

Есть мысль генерить несколько csv файлов(по одному на вкладку), а потом соединять их exec-ая перловый скрипт — но не знаю есть ли смысл.

Посоветуйте как оптимизировать процесс или может есть другие либы к-е могут это сделать быстрее?
  • Вопрос задан
  • 4560 просмотров
Пригласить эксперта
Ответы на вопрос 3
alexeyshockov
@alexeyshockov
Не уверен по поводу xls, но csv очень просто создавать потоково, по строке.
Ответ написан
smagen
@smagen
Руководитель разработки Postgres Professional
Ещё, как вариант, написать макрос для LibreOffice/OpenOffice, который будет делать конвертацию со всеми необходимыми преобразованиями. Вот есть топик по переводу xls в csv
www.oooforum.org/forum/viewtopic.phtml?t=52942
можно сделать и обратно.
Ответ написан
@softm
Надо клиента «уговаривать» на «ексел» меньшего размера.
Можете указать что за специфика вынгуждает иметь такой большой файл?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы