在PHP中不使用太多内存的情况下读/写大型XML
我试图查询一些非常大的XML文件(最多几个演出),检查它们是否格式良好,然后将它们写入硬盘。 看起来很简单,但由于它们太大,我无法在内存中获得整个文档。 因此,我的问题是: 如何在可用RAM少于一个文档时读取,检查和写入大型XML文件?
我的方法:使用XMLReader逐个节点读取它(如果成功,文档必须格式良好)并使用XMLWriter进行编写。 问题:XMLWriter似乎将所有内容都存储在RAM中,直到文档完成。 DOM文档和SimpleXML似乎也是如此。 还有什么我可以尝试吗?
你的方法似乎是合适的,为了解决XMLWriter的RAM问题,你可以尝试定期将内存刷新到你的输出文件中。
<?php
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'UTF-8');
for ($i=0; $i<=10000000; ++$i) {
$xmlWriter->startElement('message');
$xmlWriter->writeElement('content', 'Example content');
$xmlWriter->endElement();
// Flush XML in memory to file every 1000 iterations
if (0 == $i%1000) {
file_put_contents('example.xml', $xmlWriter->flush(true), FILE_APPEND);
}
}
// Final flush to make sure we haven't missed anything
file_put_contents('example.xml', $xmlWriter->flush(true), FILE_APPEND);`
资料来源:http://codeinthehole.com/tips/creating-large-xml-files-with-php/
链接地址: http://www.djcxy.com/p/64753.html上一篇: Read/Write large XMLs without using too much memory in PHP
下一篇: Nexpose XML report Version 2.0, How to remove HTML from XML?