Есть следующая задача от заказчика: на почту каким-то менеджерам приходит раз в 1-2 неделю на почту письмо с екселевским файлом который содержит 60к строк. История клиентов или типа того.
Эти менеджеры в какой-то момент достают планшет, и хотят отфильтровать этот файл по номеру клиента. Они ни в чем не разбираются и им нужно сделать страничку с одним инпутом где бы они вбили номер клиента и получили на почту выборку по данному клиенту из этого xlsx файла в нужном формате (pdf/xlsx/csv или просто текстом на почту в виде таблички).
Заказчик сказал сделать так - когда приходит письмо с файлом, он берет и копирует файл в папку и вызвает URL, по которому происходит импорт в БД. Например site.ru/import. После чего можно зайти на лендинг site.ru и запросить выборку из БД.
То есть если по нормальному, то я бы в экселевском файле сделал бы фильтр по номеру клиента или вроде того (сам в екселе не сижу). Но вот хотят это через веб сделать.
Сайт будет на хостинге, у которого 180 секунд max_execution_time и 256 Мб на оперативку PHP. Пробовал импротить через PHPExcel, один парсинг занимает пару минут. Может конечно я что-то не так настраиваю, но все равно, мне кажется вставлять в БД потом еще 60к строк долго будет по времени.
Единственный вариант который приходит на ум - запустить крон, который импортил бы по частям, где нибудь сделать таблицу в которой хранить сколько уже заимпортили или типа того. Ну и пусть себе импортит минут 10 (за 10 вызовов).
Виктор: нет. PHPExcel очень нетороплив и прожорлив до памяти. Даже если парсить чанками - невелик будет прирост скорости. Парсить же голый XML без форматирования и формул - самое оно.
Степан Юдин: Ну ок, спасибо. Но я не стал пока заморачиваться и сделал через крон, который смотрит на наличие файла в папке который нужно импортить, и импортит его за несколько заходов. В принципе все работает. Не хочется щас заморачиваться с XML.