2016-02-28 102 views
2

我有一個xml文件,有超過5000個產品(項目)。這真是一個大文件,解析該文件的執行時間超過40秒。在php中執行時間問題simplexml_load_file

我的PHP代碼:

ini_set('max_execution_time', 300); 
$xml = simplexml_load_file("wwww.example.com"); 
print_r($xml); 

對此有任何解決方案?例如只加載文件的一部分?

+0

緩存可能是一個解決方案或在後臺處理(例如,與一個齒輪人員服務器)。 – Jan

+0

@Jan你有任何教程來源嗎?謝謝。 –

+1

http://gearman.org/或http://queues.io/或者[在這裏看看這個問題。](http://stackoverflow.com/questions/3048583/what-is-the-fastest- xml-parser-in-php) – Jan

回答

-1

嘗試此上php文件的報頭中:

ignore_user_abort(true); 
set_time_limit(0); 
+1

儘管這可能起作用,但由於OP需要,所以不會使執行速度更快...... – Jan

+0

沒有區別。正如Jan提到的那樣,它不會讓執行速度更快。 –

+1

您可以使用SAX解析器進行快速加載。你可以查看http://php.net/manual/en/book.xml.php –

1

嘗試調用simplexml_load_file函數LIBXML_COMPACT標誌:

$xml = simplexml_load_file("wwww.example.com",'SimpleXMLElement',LIBXML_COMPACT); 
+0

我搜索了'LIBXML_COMPACT',發現這個:激活節點分配優化(可能會加速應用程序)。但沒有太大的區別。 Rajput王子提到,「SAX」解析是一個好主意。任何方式,非常感謝。 –

+0

我做了一些查找這樣做,並從看libxml2文檔,它似乎可以稍微加快閱讀在某些情況下,但作爲一個結果,你以後不能做任何修改的DOM。所以,如果你想要做的只是閱讀而沒有做出改變。我發現它很好奇PHP文檔沒有提到這個限制,所以也許在PHP中不是這樣的... – thomasrutter

1

XMLReader是另一種解決方案,如SAX(或外籍),即允許您逐步讀取XML文件,並且應該比前者更容易操作。

如果您不需要解析整個文件,並且可以在找到要查找的內容時停下來,它可以使事情快得多。

如果你仍然需要解析整個文件,它不會提供加速。