Как обработать XML размером > 50 мб

Статус
В этой теме нельзя размещать новые ответы.
Как вариант, на мой взгляд даже наиболее удобный.
Сначала рекурсивно обходите xml, получившийся массив, записываете в БД. Ну или нужные Вам значения массива.
В итоге у Вас получиться колонка с определенными атрибутами, ее выводите в цикле и считаете сумму.
А как это рекурсивно? Если будет работать быстро и памяти будет требовать немного, предпочту этот вариант. Вот Для просмотра ссылки Войди или Зарегистрируйся я нашел способ прямой записи в базу. Как в этом случае обстоит дело с ресурсами?
ОБычным образом читаешь построчно файл через gets() (и пофигу, какого он там у тебя размера, в память он читается построчно и поэтому проблем нет), и дальше каждую строчку ты делаешь preg_match на предмет нахождения твоего узла с числовым атрибутом. Если нашел - прибавляешь. Все.
Ну а это на крайний случай
 
  • Нравится
Реакции: bvb
огромная разница
попробуй XML-документ размером в 40ГБ отпарсить DOM-парсером
у тебя ничего не выйдет, так как он тупо не влезет в оперативку
а теперь тоже самое с помощью SAX-парсера.
легко и не принужденно, по скорости ненамного медленнее обычного чтения с файла.
Все зависит от того, как Вы разбираете файл, как уже писал выше venetu, можно к примеру считывать его построчно, и тут же в цикле формировать ключи. А с ними уже можно делать, все что потребуется.
А как это рекурсивно? Если будет работать быстро и памяти будет требовать немного, предпочту этот вариант. Вот Для просмотра ссылки Войди или Зарегистрируйся я нашел способ прямой записи в базу. Как в этом случае обстоит дело с ресурсами?
Рекурсия, это функция, которая вызывает саму себя. Ее удобно использовать при обходе деревьев. Насчет ресурсов, не понял, что Вы имели ввиду? Для записи в БД, нужных Вам элементов и их значений, подойдет стандартный INSERT. Ресурсы БД Вы уже определяете сами.
 
  • Нравится
Реакции: bvb
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху