Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 加载XML文件太大_Php_Xml_Simplexml - Fatal编程技术网

Php 加载XML文件太大

Php 加载XML文件太大,php,xml,simplexml,Php,Xml,Simplexml,我试图从一个包含大约60MB数据的URL加载xml内容。当我使用简单的XML内置库执行此操作时,我不断收到以下错误: PHP Warning: DOMDocument::loadXML(): internal error: Huge input lookup in Entity, line: 845125 脚本正在停止。发生了什么?我该怎么处理 我使用的示例url: http://foo.com/feed.xml libxml2变更日志包含“608773在xmlGROW(danielvei

我试图从一个包含大约60MB数据的URL加载xml内容。当我使用简单的XML内置库执行此操作时,我不断收到以下错误:

PHP Warning:  DOMDocument::loadXML(): internal error: Huge input lookup in Entity, line: 845125
脚本正在停止。发生了什么?我该怎么处理

我使用的示例url:

http://foo.com/feed.xml

libxml2变更日志包含“608773在xmlGROW(danielveillard)中添加缺少的检查”,这似乎与输入缓冲有关。注意,我对libxml2的内部结构一无所知,但可以想象的是,您在2.7.7中修复了一个2.7.6错误

当您直接使用simplexml_load_file()时,请检查行为是否有任何不同,并尝试设置与libxml解析器相关的选项,例如

simplexml_load_string($xml,'simplexmlement',LIBXML_COMPACT | LIBXML_parsegig)` 具体地说,您可能需要尝试LIBXML_标志


XML_PARSE_巨型标志放宽了解析器的任何硬编码限制。这会影响文档的最大深度或实体递归等限制,以及文本节点的大小限制。

要么增加PHP内存限制,要么取决于对XML的处理方式,尝试使用仅向前的读取器而不是完整的XML objectTarget XML出现错误,浏览器未加载该错误。请使用XMLReader迭代提要条目,将其扩展到DOM,并使用Xpath获取每个条目的详细信息。这样,只有一个入口节点及其子节点将加载到内存中。以下是一个例子: