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