PHP: cómo hacer un web ping

Websites

Una tarea bastante importante a la hora de posicionar una página web es asegurarte de que sigues online. Si has contratado el alojamiento a una empresa no tendrás que preocuparte mucho por el estado del sistema operativo del servidor. Pero hay otros aspectos aparte del servidor que necesitan de tu atención. Puedes pensar que una página web basta con montarla con un buen CMS, que puedes dejarla online y ahí seguirá porque no hay razón para que deje de funcionar. Pues nada más lejos de la realidad, cuantas más cosas tenga tu web, más cosas pueden fallar.

Es decir, si tienes una página artesanal de un único fichero estático es difícil que deje de funcionar. Pero si tienes un CMS, quizá un WordPress, Prestashop, Drupal o Magento.. ya empiezas a tener más elementos que mantener. Los módulos pueden ser inestables, pueden engancharse las arañas de los buscadores, usuarios que llegan a bugs involuntariamente, etcétera.. No digamos ya si tienes muchas visitas que generan contenido dinámicamente.

Las páginas web son como los coches, necesitan un mantenimiento, unas revisiones. Sino, tarde o temprano, dejarán de funcionar. Así que si quieres curarte en salud, puedes tener un sencillo script que compruebe si sigue online una web.

El script

Vamos al grano y dejémonos de tanta teoría. Una primera versión para saber si tu web está online con PHP podría hacerse así:

<?php

$content = file_get_contents('https://jnjsite.com/');
if ($content) {
    echo 'OK'.PHP_EOL;
} else {
    echo 'KO'.PHP_EOL;
}

¿Simple verdad? Por ejemplo si hacemos así:

<?php

$content = file_get_contents('https://jnjsite.com/ficheroQueNoExiste.txt');
if ($content) {
    echo 'OK'.PHP_EOL;
} else {
    echo 'KO'.PHP_EOL;
}

..obtendremos un error y se imprimirá KO. Ahora así podremos ejecutar cualquier acción, tanto si ha ido bien como si no.

Ejecutar cada 5 minutos

Para esto me hago valer del programador de tareas del sistema operativo. En GNU/Linux es bien sencillo, en Windows también, simplemente hay que seguir las instrucciones visuales. Voy a seguir con GNU/Linux que es el que tengo 😉

Para esto, guardamos el script anterior en un fichero script.php por ejemplo. Desde línea de comandos lo podemos ejecutar poniendo

php script.php

En GNU/Linux ejecutamos:

$ crontab -e

..y abrimos el programador de tareas, tanto en un servidor como en un PC de escritorio. Así añadimos una línea como la siguiente:

*/5 * * * * php /home/jaime/ruta/al/script.php > /home/jaime/ruta/al/script.log

Sustituyes la ruta a donde tú tengas el script y ya lo tienes, pingueando a cada 5 minutos a la web que hayas puesto, y guardando en el fichero script.log registro de lo que ha pasado en el último ping.

Terminando

Esto es el principio, ya de aquí en adelante, con un poco de imaginación podríamos añadir:

  • Todos los sitios que administres.
  • Que te envíe un email si alguno falla, para que lo revises antes de que ningún cliente eche en falta la web.
  • Muy buena idea es, como hizo un compañero en un proyecto, reiniciar directamente el servidor Apache si está offline 😉
Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

doce + dieciocho =

2 ideas sobre “PHP: cómo hacer un web ping”