@tester_toster

Массив, таблица бд или файловая система, что использовать?

Разбираю xlsx файл. Так как планируется обрабатывать файлы не меньше 50к строк - PHPEXCEL и другие библиотеки не подходят, так как жрут слишком много ресурсов. Другой формат использовать не получится, поэтому решил разбирать xlsx файл, построчно записывать его в другой файл, а потом уже импортировать.
При разборе файла есть два xml - shared и worksheet. worksheet хранит структуру листа, и указатели на значения из shareed. shared хранит уникальные значения ячеек.
Получается - при любом раскладке сначала нужно парсить shared.
Первым вариантом было: парсить shared в массив, а потом уже worksheet и построчно записывать в другой файл содержимое строки таблицы выбирая значения из массива.
На тестовом файле получился массив на 500к элементов, что не очень много, но массив висит в памяти и потребляет ресурсы (выходит около 60мб+-).
Вторым решением попробовал создавать вместо элементов массива файлы со именем - номером элемента массива, что решило мою проблему с памятью (средний расход скрипта 5-10мб), но увеличило время работы в разы, даже в 10 - 100 раз (время на создание 500к файлов).
Есть еще идея - хранить значения в табличке бд, но 500к запросов тоже не мало, плюс последующая их выборка по одному, умноженная на количество строк и столбцов.
Какой из трех вариантов лучше использовать?
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
@tester_toster Автор вопроса
Spout
Расход памяти у библиотеки: 10-20мб,
по времени дольше чем мое решение, а работает по второму принципу - запись shared в файл, но в каждый файл записывает не 1 значение а 10000, чтобы файлов получилось меньше, но время выполнения все-равно в разы больше, чем с массивом, что в моем случае пока не оправдано, в разнице 60мб - 20-40 сек или 20мб -20 минут выигрывает мое решение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@errogaht
PHP developer
https://www.google.ru/search?q=phpexcel+big+data
при беглом просмотре я нашёл не одно решение парсинга огромных файлов экселя на PHPExcel. Выглядит вполне реально.
Не верб я в то что такая авторитетная и древняя библиотека не способна помочь в вашем кейсе.
Ответ написан
Ваш ответ на вопрос

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

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