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

bah*_*100 3 php xml simplexml xml-parsing

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

我有512M的meomy限制

ini_set('memory_limit', '512M');
Run Code Online (Sandbox Code Playgroud)

我在30Mo下打开文件没有问题,但是750Mo,我得到致命的错误

Fatal error: Allowed memory size of 1677721600 bytes exhausted (tried to allocate 2988843769 bytes)
Run Code Online (Sandbox Code Playgroud)

我这样做是为了打开文件:

$fichier = file_get_contents($inputfileName);
$xmlInput = simplexml_load_string(utf8_encode($fichier));
Run Code Online (Sandbox Code Playgroud)

你有想法打开这个文件?

Gor*_*don 6

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

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

并确保你解析 LIBXML_PARSEHUGE

另一种选择是基于事件的XMLParser