Foros del Web » Programando para Internet » PHP »

Disminuir tiempo para simplexml_load_file()

Estas en el tema de Disminuir tiempo para simplexml_load_file() en el foro de PHP en Foros del Web. Estimados Estoy usando simplexml_load_file() para leer unos indicadores desde http://indicador.eof.cl/xml . O sea, un archivo fuera del servidor donde está el script. Tengo todo funcionando ...
  #1 (permalink)  
Antiguo 20/11/2009, 16:56
Avatar de [ EDO ]  
Fecha de Ingreso: julio-2004
Ubicación: Quilpué, V Región, Chile
Mensajes: 98
Antigüedad: 19 años, 8 meses
Puntos: 0
Disminuir tiempo para simplexml_load_file()

Estimados

Estoy usando simplexml_load_file() para leer unos indicadores desde http://indicador.eof.cl/xml. O sea, un archivo fuera del servidor donde está el script.

Tengo todo funcionando a la perfección salvo porque a veces el sitio mencionado está fuera de servicio y la función simplexml_load_file se queda mucho tiempo (varios minutos) esperando la respuesta para finalmente arrojar el error.

Entiendo por qué ocurre y sé como evitar que muestre el error, pero me importa más evitar que se demore todo ese tiempo porque interfiere en la carga de mi página.

No sé si habrá alguna forma de indicarle a esa función un tiempo máximo y que luego siga con el resto del código.


Gracias
__________________
EDO
  #2 (permalink)  
Antiguo 20/11/2009, 17:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 20
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Disminuir tiempo para simplexml_load_file()

Usa esto al principio de tu script:

Código PHP:
set_time_limit(30); 
Siendo 30 el número de segundos que quieres que el script se demore como máximo, cambialo a lo que te interese a ti. El "problema" es que si se demora demasiado, sacará el error por pantalla.

Espero que te sirva.
  #3 (permalink)  
Antiguo 20/11/2009, 20:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Disminuir tiempo para simplexml_load_file()

una buena técnica sería cachear el XML ... y solo actualizarlo con la frecuencia en que realmente este disponible y reciente...

de hecho, me parece que sería lo ideal... porque aunque puedas dar mas tiempo, hacerlo siempre es molesto, y carece de sentido (y profesionalismo, tal ves)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 20/11/2009, 20:59
Avatar de [ EDO ]  
Fecha de Ingreso: julio-2004
Ubicación: Quilpué, V Región, Chile
Mensajes: 98
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: Disminuir tiempo para simplexml_load_file()

pateketrueke, planteas una solución interesante que debo estudiar porque no estoy familiarizado con eso de cachear.

De todas formas mi intención nunca fue aumentar el tiempo de ejecución, todo lo contrario, disminuirlo para que siguiera con el resto del script después que simplexml_load_file() no lograra conectarse al otro servidor.

Igual agradecería si me indicaras conceptualmente el proceso de la solución que mencionas.
__________________
EDO
  #5 (permalink)  
Antiguo 20/11/2009, 21:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Disminuir tiempo para simplexml_load_file()

el concepto es sencillo...

primero, debes conocer el ritmo de actualización del XML, puede ser un día, una hora, etc...

con este dato debemos intentar leer un archivo (el cache) que contenga nuestra información, obviamente la primera ves no va a existir... por eso, lo creamos y escribimos el contenido a cachear...

la próxima ves comprobamos dicho cache, si ya existe... revisamos la fecha de modificación del archivo y comparándola con el tiempo actual no debe exceder el ritmo de actualización de la fuente original...

si el limite se ha vencido, pues volvemos a leer la fuente y empezamos de nuevo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 21:23.