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

时间:2011-09-07 07:46:30

标签: php xml simplexml xml-parsing

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

我有512M的meomy限制

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));

您有想法打开此文件吗?

3 个答案:

答案 0 :(得分:6)

使用基于DOM的扩展将占用更多的内存,因为原始XML是因为XML将被完全解析为节点的树结构。请查看XMLReader而不是

  

XMLReader扩展是一个XML Pull解析器。读取器在文档流上作为光标前进,并在途中停在每个节点上。

并确保使用LIBXML_PARSEHUGE

进行解析

另一种选择是event-based XMLParser

答案 1 :(得分:0)

您需要SAX或其他基于事件的xml解析器。谷歌'php sax解析器'。

答案 2 :(得分:0)