Php 内存限制和非常大的XML文件

Php 内存限制和非常大的XML文件,php,xml,simplexml,xml-parsing,Php,Xml,Simplexml,Xml Parsing,我需要解析一个非常大的XML文件,文件大小为750Mo 我的经济限额是512M ini_set('memory_limit', '512M'); 我在30Mo下打开文件没有问题,但在750Mo下,我得到了一个致命错误 Fatal error: Allowed memory size of 1677721600 bytes exhausted (tried to allocate 2988843769 bytes) 我这样做是为了打开文件: $fichier = file_get_conten

我需要解析一个非常大的XML文件,文件大小为750Mo

我的经济限额是512M

ini_set('memory_limit', '512M');
我在30Mo下打开文件没有问题,但在750Mo下,我得到了一个致命错误

Fatal error: Allowed memory size of 1677721600 bytes exhausted (tried to allocate 2988843769 bytes)
我这样做是为了打开文件:

$fichier = file_get_contents($inputfileName);
$xmlInput = simplexml_load_string(utf8_encode($fichier));

您想打开此文件吗?

您想要一个SAX或其他基于事件的xml解析器。谷歌“php sax解析器”。

使用基于DOM的扩展将占用大量内存,因为原始XML将被完全解析为节点树结构。请看一看

XMLReader扩展是一个XML拉式解析器。读卡器充当文档流上前进的光标,并在途中的每个节点处停止

并确保使用


另一种选择是

对于大文件,完美地使用XMLReader类。但如果您喜欢simplexml:

代码:


用法示例:

再次增加内存限制?。。。如果这不是一个选项,您将如何处理文件的内容?我不明白为什么XML阅读器需要分配四倍于文件大小的文件。难道你不能用这种或那种方式,分割文件(根据结构)并用你最喜欢的XML阅读器一次一个地处理位吗?使用XMLReader似乎可以解决可能重复的问题