2010-05-05 147 views
0

我用PHP解析XML文件並將行插入MYSQL數據庫。PHP + MYSQL服務器配置

我正在使用PHP simplexml_load_files加載XML和一個foreach循環訪問數組,並將行插入到我的數據庫中。

它可以很好地處理我正在測試的小文件,但實際上我需要解析一個大型的500MB XML文件並且什麼也沒有發生。

我想知道什麼是這種情況下正確的Php.ini配置?

我有一個VPS Linux Cent OS,256 MB的專用內存和MYSQL 5.0.5。我也設置了php memory_limit = 256M(我的服務器的最大值)

回答

0

gosh,一個500 MB的XML文件?我猜你用完了內存。嘗試XMLReader,這是一個拉解析器(逐行解析XML(或多或少)),以便您不會如此輕鬆地耗盡內存。

+0

是的,它可能會工作,但需要重新寫我的代碼..有沒有機會使用simplexml_load_file大文件? – Matias 2010-05-05 09:57:58

+0

SimpleXML(如DOMDocument)將XML解析爲一個整體,並且必須創建一個DOM樹。這很容易需要超過100倍的內存文件大小。 – Dormilich 2010-05-05 13:04:42

0

我建議你使用xmlreader ...它更efective內存是用於XML關注

0

內存配置位於第三方庫,而不是在php.ini中配置。 除此之外,您應該使用XMLReader或ext/xml來處理這樣一個大文件,這意味着流式訪問而不使用dom數據訪問(SimpleXML)。