Publi

Evitar que tu web se retrase por culpa de un servidor caído

Muchas veces, cuando estamos generando un sitio web de forma dinámica, la información que manejamos no depende sólo de nuestro sitio, sino de otro sitio web aparte, alojado en otro servidor (tal vez es nuestro también, o tal vez no). En ese caso, puede ocurrir que el sitio al que estamos accediendo, en un momento determinado no responda, y nuestro sistema se quedará esperando a que el servidor de alguna señal, y por eso mismo estamos haciendo que nuestros usuarios esperen (medio minuto o un minuto más de lo que deberían) para al final ver un mensaje de error.

Lo que presento aquí es una pequeña idea que he puesto en práctica en varios de mis sitios web a la hora de lidiar con servidores externos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$url="URL de nuestro servidor";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_NOBODY, true); // Excluimos el cuerpo de la web
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Devolvemos el contenido a la variable
$data = curl_exec($ch);
if ($data)
    echo "Funciona";
else
    echo "No funciona: ".curl_error($ch);
curl_close($ch);
?>

El script se basa en la capacidad de respuesta del servidor, y es que si éste tarda más de un segundo en responder, dice que no funciona. Normalmente se tarda poco tiempo en responder, la clave es reducir el timeout a 1 (limitamos el tiempo de espera). Es una buena técnica bien hacer una prueba de que el servidor responde antes de usarlo en nuestro programa (a lo mejor tenemos scripts precocinados que no queremos tocarlos ni investigarlos, o estamos seguros de que la respuesta a nuestras consultas tardará), o bien dar un timeout bajo cuando vayamos a acceder a nuestro servidor por primera vez.

Por otro lado, también podemos utilizar este código antes de la inclusión en nuestro sitio de un iframe alojado en otro servidor, puede que el iframe nunca se cargue y veamos un mensaje de error del navegador, en ese caso es mucho más elegante (aunque un error siempre duele) poner nuestro propio mensaje de error, a nuestro estilo y más agradable al usuario.
Foto: Orin Zebest (Flickr) CC-by a 5/9/2012

También podría interesarte...

There are 3 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: BlogESfera.com /

  3. kenkeiras /
    Usando Mozilla Firefox Mozilla Firefox 16.0 en Linux Linux

    Muy interesante, puede llegar a ser desquiciante cuando algo va lento por un servidor externo 😀

Leave a Reply