2013-02-26 38 views
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%。

仍然需要很长时间。任何其他提示?

+1

我希望我错了,但处理大型XML文件(以及在XML世界中,我敢说34 MB有资格作为大型文件)是一项非常耗费资源的任务,如果使用像DOMDocument或SimpleXML这样的智能库。你可以尝试'formatOutput = FALSE',但是我不会改进响应,你可能需要切换到一个丑陋而快速的[pull parser](http://php.net/xmlwriter)。 – 2013-02-26 16:11:48

+0

我只是用'formatOutput = FALSE;'尝试过。它将性能提高了约33%。尽管如此,仍然需要很长时间。 – dmmd 2013-02-26 16:13:17

回答

2

有一件事帮助 - 虽然它不是完美的解决方案 - 设置$this->exportDOM->formatOutput = FALSE;

它将性能提高了约33%。