Суть.
Нужно создавать отчет в Excel.
Использую phpexcel.
Со своей задачей он справляется но…
Excel файл надо генерить из созданного сторонним кодом CSV, а потом еще добавить пару вкладок, разукрасить цветами и т.п.
Собственно, используя либу выше все в целом просто.
Но как написано на у них на сайте на 1 ячейку файла надо ~1кб памяти. Сейчас у меня получается уже 1.5гб(выставлял в php.ini соотв-й лимит). В перспективе — данных будет еще больше. На текущем дев сервере всего 3гб оперативы(sic!). И по опыту работы с заказчиком есть подозрение что этот дев сервер, потом станет продакшеном.
Встроенные варианты кеширования в память(мемкеш етк) не подходят по скольку все-равно не хватит памяти.
В последней версии появилось кеширование в SQLite — пробовал, Отчет сгенерился за 70 минут.
Учитывая, что генерация отчетов — корень всего функционала это не приемемо ни разу — надо что бы оно генерило побыстрее еще и для кучи пользователей одновременно.
Оптимизировать в коде особенно нечего — все выполняется быстро, пока не доходит именно до генерации файла.
Есть мысль генерить несколько csv файлов(по одному на вкладку), а потом соединять их exec-ая перловый скрипт — но не знаю есть ли смысл.
Посоветуйте как оптимизировать процесс или может есть другие либы к-е могут это сделать быстрее?
Ещё, как вариант, написать макрос для LibreOffice/OpenOffice, который будет делать конвертацию со всеми необходимыми преобразованиями. Вот есть топик по переводу xls в csv www.oooforum.org/forum/viewtopic.phtml?t=52942
можно сделать и обратно.