많은 질문을 확인했지만 답변을 얻지 못했습니다.큰 XML 파일 구문 분석
구문 분석 할 큰 XML 파일이 있습니다. 현재 XMLReader으로 구문 분석 중입니다. SQL db에 삽입하기 전까지는 효과가있었습니다. 난 단지 XML을 구문 분석하는 경우 잘 작동합니다, 내가 그것을 삽입하는 경우 504 게이트웨이 제한 시간 오류가 발생합니다.
$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 : 나는 XML 파싱
:
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
DB에 물건을 삽입하기 시작할 때 문제가 발생 했으므로 코드의 해당 부분을 공유하는 것이 재미있을 수 있습니다. DB 프로세스 없이는 얼마나 걸리나요? – Sugar
Im를 최소로 공유하면 DB 프로세스가 필요하지 않으므로 오래 걸리지 않습니다. 그리고 한 가지 더 생각했습니다. 504 Gateway Time-Out을 얻은 후에는 사이트의 일부에 액세스 할 수 없으며 전체 서버 시간 초과는 생각합니다. 몇 분 (15-20) 서버가 정상적으로 실행되고 XML의 기사가 db에 저장됩니다. http://pastebin.com/S8A5Rdjw - 여기 내 기능입니다. –
Apache 또는 NGINX를 사용하고 있습니까? php 제한 시간을 늘려 보았습니까? 그렇지 않다면 스크립트 상단에'set_time_limit (0);'을 넣으십시오. – CrazySabbath