2016-10-24 2 views
2

Я пытаюсь загрузить xml-контент из URL-адреса, содержащего около 60 МБ данных. Когда я сделать это с помощью простого XML, построенного в библиотеке я получаю следующее сообщение об ошибке:Файл LoadXML слишком большой

PHP Warning: DOMDocument::loadXML(): internal error: Huge input lookup in Entity, line: 845125 

И сценарий остановки. Что не так? Как я могу справиться с этим?

Пример URL я использую:

http://foo.com/feed.xml 
+0

Либо увеличьте лимит памяти PHP, либо в зависимости от того, что вы хотите сделать с XML, попробуйте только читателя, а не полный XML-объект – RiggsFolly

+0

http://stackoverflow.com/questions/911663/parsing-huge- xml-files-in-php –

+0

У Target xml есть ошибка, и браузер не загрузил его. – Mohammad

ответ

1

libxml2 изменений содержит "608773 добавить недостающую проверку в xmlGROW (Daniel Veillard)", который, как представляется, связано с входным буферизацией. Примечание. Я ничего не знаю о внутренних функциях libxml2, но кажется, что вы заметили ошибку 2.7.6, зафиксированную в 2.7.7.

Проверьте, не отличается ли поведение при использовании simplexml_load_file() напрямую, и попробуйте установить параметры, связанные с парсером libxml, например.

simplexml_load_string ($ XML, 'SimpleXMLElement', LIBXML_COMPACT | LIBXML_PARSEHUGE) ` В частности, вы можете захотеть попробовать флаг LIBXML_PARSEHUGE.

http://php.net/manual/en/libxml.constants.php Флаг XML_PARSE_HUGE ослабляет любой жестко определенный предел из анализатора. Это влияет на ограничения, такие как максимальная глубина документа или рекурсия сущности, а также пределы размера текстовых узлов.

Смежные вопросы