2016-08-25 3 views
0

MySQL DB에서 각 레코드를 구문 분석하고 삽입 할 큰 xml 파일 (60Mb)이 있습니다. 나는 그렇게하기 위해 simpleXML을 사용하고 있으며 Xamp의 매력처럼 작동했지만 라이브 호스팅 웹 사이트에서는 작동하지 않습니다. $ xml 객체가 false를 반환하는 이유를 알지 못하므로 오류가 발생하지 않습니다. XML에 많은 양의 레코드가 있기 때문입니까?simplexml_load_file이 오류없이 작동하지 않습니다.

XML file

+0

오류 메시지를 찾으려면이 답변의 지침을 따르고 신중하게 읽고 해결할 수없는 경우 새로운 질문을 올리십시오. http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php/12772851#12772851 – IMSoP

+0

그 해결책이 생겼습니까? – Camit1dk

+0

예, "서버의 php.ini에서 다음 값을 확인하십시오 (phpinfo() 함수를 사용하여 표시) : post_max_size 및 upload_max_filesize"가 올바른지 확인하십시오. –

답변

0

require('connectDB.php'); 
$query = "INSERT INTO myTable (cp,colonia,municipio,ciudad,estado) VALUES (?,?,?,?,?)"; 
if($stm = $con->prepare($query)){ 
    if(file_exists('CPdescarga.xml')){ 
     $xml = simplexml_load_file("CPdescarga.xml", 'SimpleXMLElement', LIBXML_COMPACT | LIBXML_PARSEHUGE); 
     if($xml === false){ 
      echo "No se cargó el archivo correctamente"; 
      foreach (libxml_get_errors() as $error){ 
       echo "\t". $error->message; 
      } 
     } else{ 
      $error = 0; 
      foreach($xml->table AS $registro){ 
       $stm->bind_param('sssss',$registro->d_codigo,$registro->d_asenta,$registro->D_mnpio,$registro->d_ciudad,$registro->d_estado); 
       if(!$stm->execute()){ 
        $error++; 
       } 
      } 
     echo "Se presentaron $error errores!"; 
     } 

    } else{ 
     echo "No existe el archivo!"; 
    } 

} else{ 
    echo "No se pudo preparar la consulta"; 
} 
$stm->close(); 
$con->close();` 
(표시 사용은 phpinfo() 함수) 서버에 php.ini 파일에서 다음 값을 확인하십시오 : post_max_size을하고 필요한 경우 모두

그들을 향상이 upload_max_filesize.

+0

그게 정확히 문제 였어, 고마워! –

관련 문제