0
我檢查了很多問題,但沒有得到答案。解析大XML文件
我有一個很大的XML文件,我需要解析。目前我正在用XMLReader解析它。它運行良好,直到我開始將它插入SQL數據庫。如果我只回聲解析XML它工作正常,如果我插入它,我得到504網關超時錯誤。這裏是我的代碼示例:
哪裏解析XML:
$xml = new XMLReader();
$xml->open(APP_PATH_OWA."/trnUpload/TRNavteraData.xml");
while($xml->read()){
//get products
if($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'table'){
$product = array();
}
if($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == 'ident'){
$xml->read();
$product['id'] = $xml->value;
}
...
的foreach:
foreach($products as $product){
...
$productTitle = $product['title'];
$productID = $product['id'];
$productImageUrl = "http://www.example.com/logo.png";
$productAttrHtml = $product['computed'];
// after that I'm inserting those data using ZEND framework.
XML文件是關於300K +線。
所有PHP函數:http://pastebin.com/S8A5Rdjw
由於問題出現在您開始向數據庫中插入內容時,分享該部分代碼可能會很有趣。沒有數據庫過程需要多長時間? – Sugar 2014-09-11 08:20:42
我在一分鐘內分享它,沒有數據庫過程它並不需要很長時間。我想到了另外一件事,在得到504網關超時之後,我無法訪問我網站的任何部分,我認爲整個服務器超時。幾分鐘後(15-20)服務器開始正常運行,XML文件存儲在db中。 http://pastebin.com/S8A5Rdjw - 這是我的功能。 – 2014-09-11 08:26:05
您使用的是Apache還是NGINX?你有沒有嘗試增加PHP超時限制?如果沒有,請嘗試在腳本的頂部放置'set_time_limit(0);'。 – CrazySabbath 2014-09-11 08:42:18