@BushaevDenis

Как скормить большой xml(6MB) php?

Как скормить php довольной большой xml файл для парсинга?
Написал уже скрипт, отладил его на облегчённом файле xml, а тут такая подлянка.
Так как я делаю скрипт для юзера, нужна максимальная автоматизация.
Файл скармливаю посредством file_get_contents, потом simple html dom разбирает его на DOM дерево.
$html = str_get_html(file_get_contents('content.xml'));

Настройки php7-x64:
max_execution_time = 0
max_input_time = 0
;max_input_nesting_level = 64
; max_input_vars = 1000
memory_limit = 6G
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 4
gromdron
@gromdron
Работаю с Bitrix24
Эм... Ну вообще 6МБ это довольно маленький обьем который и в оперативку помещается, так что сверх ничего не нужно. Если этот объем тормозит, так может у Вас не парсинг а сами операции долго проходят?
Что касается темы - можно загуглить xmlreade large files или "PHP SAX XML" там про stream расскажут... Но по памяти выйдет примерно те же 6 мб
Ответ написан
Комментировать
@BushaevDenis Автор вопроса
Может быть я не правильно выразился. Не виснет - а долго грузит, а потом выдаёт результат примерно такой же - если бы у меня была ошибка в парсере, так что я виню скорее simple html dom
Ответ написан
Комментировать
Acuna
@Acuna
Заполнил свой профиль
Дак ведь это... simple_html_dom вообще весьма медленная вещь, ибо парсит все регулярками, она же не для этого совсем. Смотрите в сторону специализированных решений для XML, например XMLReader. Открываете этим свой файл через file_get_contents (), и вперед.
Ответ написан
Комментировать
@heahoh
Full stackoverflow developer
Попробуйте специализированные библиотеки для работы с xml, по идее они должны быть быстрее: SimpleXML, XMLReader.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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