Foros del Web » Programando para Internet » PHP »

Xml de gran tamaño que ante un error pase al proximo nodo y no rompa el proceso

Estas en el tema de Xml de gran tamaño que ante un error pase al proximo nodo y no rompa el proceso en el foro de PHP en Foros del Web. Estimados ante todo buenos dias, les comento cual es mi problema, tengo que manejar xml de gran tamaño (500mb) y la realidad es que aveces ...
  #1 (permalink)  
Antiguo 21/01/2016, 13:48
 
Fecha de Ingreso: julio-2011
Ubicación: buenos aires
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Xml de gran tamaño que ante un error pase al proximo nodo y no rompa el proceso

Estimados ante todo buenos dias, les comento cual es mi problema, tengo que manejar xml de gran tamaño (500mb) y la realidad es que aveces funcionan bien y aveces se rompe.

Básicamente utilizo una mezcla de xmlreader y simpleXLM (para no utilizar tanta memoria) . Cuando llamo simplexml_import_dom($doc->importNode($z->expand(), true)); Aveces falla y me gustaria que cuando falle pase al siguente nodo y no que me pare el proceso.
Se ejecuta la llamada por cron job
Este es el cominezo del codigo

Código PHP:
while($z->read())
                {
            
                        if(
$z->nodeType === XMLReader::ELEMENT && $z->name === 'agent')
                        
                        {

    
$doc = new DOMDocument('1.0','UTF-8');            
 
$item1 simplexml_import_dom($doc->importNode($z->expand(), true)); 

}

Desde ya muchas gracias a todos.
  #2 (permalink)  
Antiguo 21/01/2016, 15:22
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Xml de gran tamaño que ante un error pase al proximo nodo y no rompa el p

algo asi

Código PHP:
Ver original
  1. if($z->nodeType === XMLReader::ELEMENT && $z->name === 'agent')
  2. {
  3.     try {
  4.         $doc = new DOMDocument('1.0','UTF-8');            
  5.         $item1 = simplexml_import_dom($doc->importNode($z->expand(), true));
  6.     } catch (Exception $e) {
  7.         echo 'Mensaje Error: ',  $e->getMessage(), "\n";
  8.         continue 2;
  9.     }
  10. }
  #3 (permalink)  
Antiguo 25/01/2016, 12:02
 
Fecha de Ingreso: julio-2011
Ubicación: buenos aires
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Xml de gran tamaño que ante un error pase al proximo nodo y no rompa el p

Gracias por la respuesta, ya lo habia propabado pero igual se rompe de esa forma, lo solucione en forma momentánea
Código PHP:
while($z->read())
                {
                
//    echo $z->name;
                        
if($z->nodeType === XMLReader::ELEMENT && $z->name === 'agent')
                        
                        {

        if(
$z->expand()===false)
        {
                
$z->next();
         echo 
'fallo expand';
    
        }
    
$doc = new DOMDocument('1.0','UTF-8');
 
$item1 simplexml_import_dom($doc->importNode($z->expand(), true)); 

Etiquetas: nodo, pase, proceso, tamaño, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:01.