Como mostrar error con SimpleXML si no encuentra el archivo

Estado
No está abierto para más respuestas.

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
Buenas,

estoy toqueteando un poco con SimpleXML, pero no encuentro como hacer esto, yo tengo el siguiente código:

PHP:
<?php

    $chequeo = simplexml_load_file('http://url.tld/themes.xml');
        echo "Última versión disponible:"."  <span id='ver'>".$chequeo->theme[0]->version."</span>";
        echo "<br />";
        echo "Última fecha de actualización:"."  ".$chequeo->theme[0]->actualizado;

?>

Es para comprobar una versión y una fecha (lo voy a utilizar para chequear actualizaciones para plantillas), el caso es que quiero que en caso de que el servidor este caído si se hace el chequeo devuelva un error visible al usuario.

¿Cómo puedo hacerlo?
 

Bleed

Diamante
Usuario de Bronce
Mensajes
2,408
Puntuación de reacción
1
¿A que servidor te refieres? ¿Al que aloja el xml?

Enviado desde mi LG-P700 usando Tapatalk now Free
 

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
¿A que servidor te refieres? ¿Al que aloja el xml?

Enviado desde mi LG-P700 usando Tapatalk now Free
Sí, me expliqué escaso.

Si ese servidor está caido o simplemente no existe el archivo quiero que devuelva un mensaje que avise de ello en vez de los echo arriba expuestos.

He visto que en caso de que no se encuentre el archivo se trata el resultado como FALSE, entonces hice esto:

PHP:
 <?php

    $chequeo = simplexml_load_file('http://url.tld/themes.xml');

    if($chequeo === FALSE){
        echo "El servidor está caído y no se han podido procesar los datos"
    }else{
        echo "Última versión disponible:"."  <span id='ver'>".$chequeo->theme[0]->version."</span>";
        echo "<br />";
        echo "Última fecha de actualización:"."  ".$chequeo->theme[0]->actualizado;
    }
?>

Pero no me ha funcionado, ¿estoy haciendo algo mal?:confused:
 

Bleed

Diamante
Usuario de Bronce
Mensajes
2,408
Puntuación de reacción
1
PHP:
 <?php
$url = @file_get_contents("http://url.tld/themes.xml");
if ($url){
$chequeo = simplexml_load_file($url);
echo "Última versión disponible:   <span id='ver'>".$chequeo->theme[0]->version."</span>";
echo "<br />";
echo "Última fecha de actualización:   ".$chequeo->theme[0]->actualizado;
}else{
echo "URL caida";
}
?>

PD: He visto que en los echo concatenas texto, en plan echo "texto"."texto".$var, lo cual no tiene mucho sentido. Es lo mismo que echo "texto texto".$var;
 
Última edición:

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
PHP:
 <?php
$url = @file_get_contents("http://url.tld/themes.xml");
if ($url){
$chequeo = simplexml_load_file($url);
echo "Última versión disponible: **<span id='ver'>".$chequeo->theme[0]->version."</span>";
echo "<br />";
echo "Última fecha de actualización: **".$chequeo->theme[0]->actualizado;
}else{
echo "URL caida";
}
?>

PD: He visto que en los echo concatenas texto, en plan echo "texto"."texto".$var, lo cual no tiene mucho sentido. Es lo mismo que echo "texto texto".$var;

Sería
PHP:
$chequeo = simplexml_load_file("http://url.tld/themes.xml");
o volver a definir la variable... sino me cargaría el contenido de la url.

En cuanto a lo de la concatenación lo sé, pero es por simple organización, me gusta más así...

Ya que estamos... ¿cuál es la diferencia entre @file_get_contents y file_get_contents? No vi nada en los docs

Gracias! :mola:
 

Bleed

Diamante
Usuario de Bronce
Mensajes
2,408
Puntuación de reacción
1
Sería
PHP:
$chequeo = simplexml_load_file("http://url.tld/themes.xml");
o volver a definir la variable... sino me cargaría el contenido de la url.

En cuanto a lo de la concatenación lo sé, pero es por simple organización, me gusta más así...

Ya que estamos... ¿cuál es la diferencia entre @file_get_contents y file_get_contents? No vi nada en los docs

Gracias! :mola:

Respecto a lo de hacer otro simplexml_load_file("http://url.tld/themes.xml"), lo veo una tonteria. El archivo themes.xml ya lo tienes cargado previamente en $url, y en caso contrario es que el archivo (o su servidor) no están disponibles.

La @ de @file_get_contents silencia los posibles errores que pueda producir la funcion. ;)
 

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
Respecto a lo de hacer otro simplexml_load_file("http://url.tld/themes.xml"), lo veo una tonteria. El archivo themes.xml ya lo tienes cargado previamente en $url, y en caso contrario es que el archivo (o su servidor) no están disponibles.

La @ de @file_get_contents silencia los posibles errores que pueda producir la funcion. ;)

Tienes razón, es error 'común' que al poner la variable ahí produzca un error, por lo que he leído es por no tener allow_url_fopen activado.

Gracias por las respuestas! :mola:
 
Estado
No está abierto para más respuestas.
Arriba