@ermolaev_nikita

Как обработать XML более 1 ГБ?

В чем суть, есть сайт, на нем over999 элементов в инфоблоке, при выгрузке XML'ка весит почти 2 ГБ, как обработать такого монстра. Понятное дело, что тупо закинуть все это дело SimpleXMLElement и радоваться жизни не получится. Я написал класс, чтобы упростить жизнь машине, суть в чем:
Файл считывается построчно, определяется местоположение блоков, например по тегу <Товар>, сохраняется этот блок в строку, а дальше кидается в SimpleXMLElement. тем самым можно по каждому товару пройтись. Но проблема вот ещё в чем, сами элементы очень жирные, и на тестовой машине обрабатываются невероятно долго, на обработку одного элемента уходит 1-3 секунд.
Есть ли какие-то хитрости по работе с такими большими файлами, или тут просто, тестируй, проверяй, а дальше бери нормальный сервер и радуйся мощностям.
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега PHP
Web developer
Если структура простая, то ее лучше поменять на csv и использовать php.net/manual/en/function.fgets.php

Если нужен обязательно xml, то php.net/manual/en/refs.xml.php
Ответ написан
@grinat
Через xmlreader, он по ноде считывает, каждую ноду можешь кидать в SimpleXML и дальше радоваться жизни, пример: biostall.com/import-frickin-huge-xml-files-with-xm...
Если вместо SimpleXML будешь использовать регэкспы, получишь очень сильное ускорение.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект
19 апр. 2024, в 16:22
30000 руб./за проект