2
所以,我创建了一个34MB的XML文件。DOMDocument-> saveXML()耗时太长
当我试图从DOMDocument->saveXML()
获得输出时,它需要94秒才能返回。
我认为产生这个XML这里无关紧要的代码,因为问题是在saveXML()行:
$this->exportDOM = new DOMDocument('1.0');
$this->exportDOM->formatOutput = TRUE;
$this->exportDOM->preserveWhiteSpace = FALSE;
$this->exportDOM->loadXML('<export><produtos></produtos><fornecedores></fornecedores><transportadoras></transportadoras><clientes></clientes></export>');
[...]
$this->benchmark->mark('a');
$this->exportDOM->saveXML();
$this->benchmark->mark('b');
echo $this->benchmark->elapsed_time('a','b');
die;
这给了我94.4581
。
我在做什么错?在生成文件时,你们是否知道DOMDocument与性能相关的问题?
如果您需要更多信息,请告诉我。谢谢。
我试过删除formatOutput
。它将性能提高了33%。
仍然需要很长时间。任何其他提示?
我希望我错了,但处理大型XML文件(以及在XML世界中,我敢说34 MB有资格作为大型文件)是一项非常耗费资源的任务,如果使用像DOMDocument或SimpleXML这样的智能库。你可以尝试'formatOutput = FALSE',但是我不会改进响应,你可能需要切换到一个丑陋而快速的[pull parser](http://php.net/xmlwriter)。 – 2013-02-26 16:11:48
我只是用'formatOutput = FALSE;'尝试过。它将性能提高了约33%。尽管如此,仍然需要很长时间。 – dmmd 2013-02-26 16:13:17