Pedir presupuesto

Manejar Cron Jobs en PHP

¿Qué es un Cron Job

Los Cron Jobs o Cron Table son procesos Linux que nos facilitan la creación de tareas repetitivas.

Cronjob en PHP

El uso de este sistema nos puede servir para muchísimas cosas dentro del desarrollo web como por ejemplo para hacer backups de nuestra base de datos cada ciertos días, para mandar e-mails con novedades a los usuarios registrados, etc .. En nuestro caso vamos a programar una tarea de eliminación de usuarios de una tabla en el caso de que los usuarios no se hayan activado en un tiempo de 2 dias.

¿Como es la estructura de un Cron Job?

Lo primero que hay que saber es que un Cron Job tiene una estructura de 5 columnas seguido de la ruta y el comando a ejecutar.

Min Hora Día Mes Dia de la semana Ruta + comando
30 8 15 * * home/path/to/command/delete.sh

En este ejemplo se ejecutaría el proceso delete.sh los días 15 de cada mes a las 8:30 de la mañana.

Si quisieramos por ejemplo, ejecutarlo el primer día de cada mes a las 10 de la mañana, el código sería el siguiente:

0 10 1 * * home/path/to/command/delete.sh

Existen otra serie de operadores que nos servirán para personalizar aun más estos procesos como:

  • Comas: Se usa para crear una lista de valores.
  • Guiones: Se usa para especificar un rango de valores.
  • Asteriscos: Se usa para especificar «todo» o «cada» valor.

Hay que tener en cuenta que Crontab envía por defecto un e-mail de notificación cuando una tarea se ha ejecutado. Esto sin embargo en determinados casos puede no ser necesario para tu tarea, asi que puede evitarse redirigiendo la salida que se realiza con el operador «>».

Siguiendo el ejemplo anterior, vamos a redirigir la salida para la tarea: «Ejecutar delete.sh el primer día de cada mes a las 10 de la mañana»:

0 10 1 * * home/path/to/command/delete.sh >/dev/null

Cron Jobs en Php

Para utilizar Cron Jobs en PHP, necesitamos ejecutar comandos en el servidor remoto, para esto, PHP nos proporciona una librería llamada SSH2, aunque puede que esta librería no esté disponible, asi que nos hará falta descargarla desde el siguiente enlace:

PHP libssh2 Instalación / Configuracion

Crear la Clase

Para comernzar, tendremos que crear la clase con los siguientes atributos:

  • $connection: Representa la conexión.
  • $path: Representa la ruta de este archivo.
  • $handle:Representa el nombre de nuestro archivo cron temporal
  • $cron_file: Representa la ruta completa y el nombre de nuestro archivo cron.

Los pasos a seguir por la clase son:

  1. Conectarse y autentificarse como un usuario adecuado para ejecutar comandos y acceder a cronTab.
  2. Crear un método para controlar la ejecución de los distintos comandos, el nombre de este método será exec()
  3. Habilitar la escritura de cronTab en un fichero y la opción de eleminar este fichero una vez haya terminado la ejecución. Estos métodos los llamaremos write_to_file() y remove_file().
  4. Para crear y eliminar los cronJobs utilizaremos los métodos append_cronjob() y remove_cronjob()
  5. remove_crontab(): Este método nos servirá para eliminar todo el cronTab completo en el caso de que sólo se haya eliminado el último cronJob
  6. Para ayudarnos a validar un poco nuestro script, utilizaremos crontab_file_exists() con el que nos aseguraremos de que existe el archivo cron temporal, y error_message() con el que mostraremos los errores que puedan surgir.

Una vez tenemos la idea de como crear la clase, estamos preparados para empezar a leer el código que tenemos disponible en Nettuts, donde nos explican claramente cada una de las sentencias, y donde podremos descargar dicha clase y usarla en nuestros proyectos.

Clase para manejar Cron Jobs en PHP

Vía: Nettuts

¿Te ha gustado?, Comparte!!

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

¡Pide tu presupuesto!

Completa los campos para poder enviarte un presupuesto

Todos y tu presupuesto son a medida y totalmente personalizados, entendemos que dos proyectos online no pueden ser iguales y que cada cliente tiene unos objetivos y necesidades muy diferentes, es por eso que para elaborar un presupuesto, necesitamos saber de ti, tu proyecto y objetivos.

Los campos marcados con (*) son obligatorios.

La comunicación enviada quedará incorporada a un fichero del que es responsable COLORDEU. Esta comunicación se utilizará exclusivamente para tratar sus datos para atender su solicitud, siempre de acuerdo al Reglamento (UE) 2016/679 (RGPD), la Ley Orgánica 15/1999 (LOPD) y el Real Decreto 1720/2007 de desarrollo de la LOPD), sobre protección de datos. Sus datos no se comunicarán a terceros, excepto por obligación legal, y se mantendrán mientras no solicite su cancelación. En cualquier momento usted puede ejercer los derechos de acceso, rectificación, portabilidad y oposición, o si procede, a la limitación y/o cancelación del tratamiento, comunicándolo por escrito, indicando sus datos personales mediante un email a hola@colordeu.es