我有一個xml
文件,有超過5000個產品(項目)。這真是一個大文件,解析該文件的執行時間超過40秒。在php中執行時間問題simplexml_load_file
我的PHP代碼:
ini_set('max_execution_time', 300);
$xml = simplexml_load_file("wwww.example.com");
print_r($xml);
對此有任何解決方案?例如只加載文件的一部分?
我有一個xml
文件,有超過5000個產品(項目)。這真是一個大文件,解析該文件的執行時間超過40秒。在php中執行時間問題simplexml_load_file
我的PHP代碼:
ini_set('max_execution_time', 300);
$xml = simplexml_load_file("wwww.example.com");
print_r($xml);
對此有任何解決方案?例如只加載文件的一部分?
嘗試此上php文件的報頭中:
ignore_user_abort(true);
set_time_limit(0);
儘管這可能起作用,但由於OP需要,所以不會使執行速度更快...... – Jan
沒有區別。正如Jan提到的那樣,它不會讓執行速度更快。 –
您可以使用SAX解析器進行快速加載。你可以查看http://php.net/manual/en/book.xml.php –
嘗試調用simplexml_load_file
函數LIBXML_COMPACT
標誌:
$xml = simplexml_load_file("wwww.example.com",'SimpleXMLElement',LIBXML_COMPACT);
我搜索了'LIBXML_COMPACT',發現這個:激活節點分配優化(可能會加速應用程序)。但沒有太大的區別。 Rajput王子提到,「SAX」解析是一個好主意。任何方式,非常感謝。 –
我做了一些查找這樣做,並從看libxml2文檔,它似乎可以稍微加快閱讀在某些情況下,但作爲一個結果,你以後不能做任何修改的DOM。所以,如果你想要做的只是閱讀而沒有做出改變。我發現它很好奇PHP文檔沒有提到這個限制,所以也許在PHP中不是這樣的... – thomasrutter
XMLReader是另一種解決方案,如SAX(或外籍),即允許您逐步讀取XML文件,並且應該比前者更容易操作。
如果您不需要解析整個文件,並且可以在找到要查找的內容時停下來,它可以使事情快得多。
如果你仍然需要解析整個文件,它不會提供加速。
緩存可能是一個解決方案或在後臺處理(例如,與一個齒輪人員服務器)。 – Jan
@Jan你有任何教程來源嗎?謝謝。 –
http://gearman.org/或http://queues.io/或者[在這裏看看這個問題。](http://stackoverflow.com/questions/3048583/what-is-the-fastest- xml-parser-in-php) – Jan