¿Qué es una tarea cron?

A trabajo cron es una tarea repetitiva en un servidor web que se ejecuta como un script de shell o una función de línea de comandos en función de un patrón de tiempo establecido por los administradores.
A nivel técnico, una tarea cron funciona en servidores web Linux según lo establecido en el archivo crontab o tabla cron a intervalos de tiempo fijos.

Un trabajo cron ejecuta un script que ejecuta varios comandos en un servidor web según lo requiera el software que se aloja.
Las plataformas CMS como
WordPress y Drupal en la publicación web para programar tareas automatizadas relacionadas con la funcionalidad y el mantenimiento de los módulos, que requieren la configuración del servidor web.

WP-Cron es utilizado por el CMS WordPress para programar tareas relacionadas con plugins y temas.
Una tarea cron ordena a los elementos de plugins y módulos que actualicen su configuración, descarguen contenido de las API, borren cachés o realicen otras tareas relacionadas con la automatización.
Puedes programar tareas cron con cPanel, Plesk y otras herramientas de administración.

Definición de Cron job

Un trabajo cron es una tarea automatizada en un servidor web basado en Linux que se ejecuta mediante la línea de comandos a intervalos de tiempo establecidos de forma repetida.
Cron es el componente de software del servidor web que permite programar el trabajo.
El patrón de tiempo para el script se establece mediante el crontab o tabla cron, que establece un horario repetitivo para que se ejecute el script.
Un trabajo cron es importante en la publicación de sitios web CMS.

En terminología Linux cron funciona como un demonio o proceso en segundo plano que ejecuta trabajos no interactivos en un servidor web.
El demonio ejecuta un script de shell de línea de comandos según la programación dictada por el crontab.
El archivo crontab suele encontrarse en /etc/crontab en el servidor web, con una mayor automatización mediante subcarpetas.

Los administradores pueden configurar un sistema de sub-archivos en la carpeta crontab como:

  • /etc/cron.hourly/ – Para ejecutar todos los scripts una vez cada hora.
  • /etc/cron.daily/ – Para ejecutar los scripts necesarios una vez al día.
  • /etc/cron.weekly/ – Para ejecutar comandos programados una vez a la semana.
  • /etc/cron.monthly/ – Para ejecutar todas las operaciones una vez al mes.

Si colocas trabajos cron en estas carpetas, se programarán automáticamente para que se ejecuten en los intervalos respectivos.
De lo contrario, es necesario utilizar una utilidad del panel de control como cPanel, Plesk, etc., para configurar un trabajo cron personalizado para la automatización de scripts y el mantenimiento del CMS.
Los administradores de sistemas experimentados también pueden programar trabajos cron utilizando la línea de comandos para crear y gestionar archivos crontab en el servidor web.

Uso de Cron job

Un cron job es utilizado por scripts CMS como Drupal para indexar el contenido del sitio web y comprobar las actualizaciones de la plataforma en el servidor de origen.
WordPress utiliza
WP-Cron para buscar actualizaciones y publicar entradas programadas.
Ambas plataformas CMS son extensibles, de modo que los plugins, módulos y temas pueden incluir funciones personalizadas que se ejecutan con cada tarea cron.
Todos ellos dependen de la función cron de Linux para ejecutarse.

Los editores web tienen la opción de programar trabajos cron en su servidor web o de utilizar una solución de plugin/módulo que ejecute las operaciones desde un script PHP.
Aunque son funcionalmente equivalentes, las soluciones PHP anulan la funcionalidad crontab en el servidor web, eliminando la necesidad de configurar los trabajos cron como scripts de línea de comandos para soportar entornos de hardware compartidos.

La programación de trabajos cron a través de cPanel, Plesk y otras utilidades del panel de control es relativamente sencilla.
Existen configuraciones con granularidad al mes, día, hora y minuto que pueden programarse con un comando concreto.
Puedes programar trabajos cron para diferentes scripts en soporte de múltiples nombres de dominio.
Es necesario introducir el comando que debe ejecutar el trabajo cron en los ajustes con la temporización.

Ejemplos de scripts básicos

Si utilizas la línea de comandos para gestionar los trabajos cron, algunos de los comandos importantes que debes conocer son:

crontab -l

Este comando mostrará el contenido del crontab actual.

crontab -e

Este comando te permitirá editar o crear un nuevo crontab.

crontab -r

Este comando eliminará el archivo crontab actual del servidor.

crontab -u  [username]

Este comando sólo hará referencia a los archivos relacionados con un usuario concreto.

crontab -v

Este comando te permitirá ver los cambios más recientes en el crontab.
Al añadir un crontab, la configuración de la hora debe seguir el patrón de

minuto(s) hora(s) día(s) mes(es) día(s) de la semana comando(s)

Cuando esto se combina con el comando que se va a ejecutar, el crontab se mostrará como:

* * * * comando(s)

 Si no tienes experiencia en el uso de la línea de comandos para gestionar un servidor web o utilizas un plan de alojamiento compartido con cPanel, puedes consultar lo siguiente :

configuración del cron job

Haz clic en el icono «Cron Jobs» de la pestaña «Avanzado» de cPanel para entrar en la sección de configuración.
Allí verás una tabla con ajustes para el día de la semana, el mes, el día, la hora y el minuto.
En un servidor web no se puede establecer una programación de trabajos cron con una frecuencia superior a un minuto.
Utiliza valores numéricos para la hora en cada sección o introduce un asterisco para la automatización cada día, mes y año.

Introduce el comando script requerido por tu plataforma o software CMS y guarda la configuración de la pestaña cron en cPanel.
A continuación, el comando se ejecutará automáticamente en el servidor a intervalos fijos según la configuración horaria establecida.
Puedes consultar la página oficial
tutorial de cPanel para más información sobre el proceso.

Uso de Cron job en la web

Si utilizas el CMS Drupal para la publicación web, la funcionalidad básica incluye la programación crontab sin necesidad de configurarla en el servidor web.
Sin embargo, se recomienda configurarlo directamente en el servidor para obtener resultados más fiables.
El comando básico que requiere el
CMS Drupal para la programación de trabajos cron es

0 * * * * wget -O - -q -t 1 http://CRON_URL

En este caso, hay diferentes configuraciones para la URL a llamar en el comando dependiendo de la versión de Drupal que se utilice:

 

  • Drupal 8:
    http://www.example.com/cron/<key> 

  • Drupal 7:
    http://www.example.com/cron.php?cron_key=<key> 

  • Drupal 6:
    http://www.example.com/cron.php 

 

Al programar la tarea cron para un intervalo de tiempo determinado, se ejecutará automáticamente el archivo indicado en la configuración de URL, lo que permitirá al CMS realizar un mantenimiento regular.

Si necesitas configurar una tarea cron para WHMCS, ve a «Estado de Automatización» en la sección de administración.
Allí deberías ver un enlace a «Estado de Cron» que te dará la URL del comando que hay que automatizar para que se ejecute WHMCS.

WHMCS recomienda configurar la tarea cron para que se ejecute cada cinco minutos en el servidor web.
Para ello, copia el comando URL del «Estado de Automatización» e introdúcelo en cPanel con los ajustes para el patrón de tiempo:

comando cron

La URL del comando cron es exclusiva de tu instalación de WHMCS en el servidor web.
Una vez configurado el cron job, el CMS funcionará regularmente de forma automatizada.

Usar cron con WordPress

Como parte de la funcionalidad central del CMS, WordPress está configurado para ejecutar wp-cron.php cada vez que se carga una página en un sitio web.
Aunque esto es útil para mantener el contenido actualizado, puede consumir muchos recursos y, además, es menos fiable para los sitios web WordPress con poco tráfico que programar una tarea cron normal.

Para desactivar la funcionalidad automática de wp-cron.php, es necesario editar el archivo wp-config.php de WordPress añadiendo la línea

define('DISABLE_WP_CRON', true);

Una vez guardado este cambio en el servidor web, puedes acceder a cPanel para programar una tarea cron utilizando la funcionalidad del servidor web.
Configura la tarea cron para que se ejecute cada 30 minutos con el comando:

cd ${HOME}/public_html; /usr/local/bin/php -q wp-cron.php

¿Qué es WP-Cron?

WordPress permite que los plugins y temas se basen en la funcionalidad de wp-cron.php para programar tareas automatizadas con cron jobs.
Esto se consigue utilizando la función
Función wp_schedule_event() en PHP.
La función wp_schedule_event() tiene tres variables principales: $timestamp, $recurrence y $hook.
Estas variables establecen cuándo se ejecutará el script cron, la repetición y el código que se utilizará.

Aunque se recomienda sustituir la configuración predeterminada de wp-cron.php ejecutándolo directamente con un trabajo cron programado en el servidor web, también hay otros plugins que ejecutarán el crontab desde el código PHP. WP Control es el plugin cron más popular para WordPress con capacidad para ampliar la administración y funcionalidad de wp-cron.php. Easycron y Simple Cron son otras soluciones de programación para WordPress que se instalan como plugins para optimizar la administración del CMS.