¿Qué es CRON y para qué puedes usarlo?

“¿Qué es cron?” Respondo a esta pregunta al menos una vez al mes por parte de personas que no son desarrolladores. Es una gran pregunta. Sin embargo, voy a dividirlo en dos preguntas.

“¿Qué es CRON?”
“¿Qué es WP-CRON?”

¿Qué es CRON?

En esencia, un cron es un “programador basado en el tiempo”. Gestiona tareas que deben realizarse de forma regular y en un momento específico.

Por ejemplo, si quieres que tu blog en WordPress muestre el pronóstico del tiempo en el encabezado, entonces cada mañana debes obtener el pronóstico del tiempo. Sí, puedes contratar a alguien para que inicie sesión cada mañana, obtenga el pronóstico y lo pegue en un widget. Pero un plan mejor es tener un programa que se ejecute todas las mañanas y que conecte con una API para obtener el pronóstico del día y actualizar tu base de datos por ti. El programa que ejecuta tu programa de búsqueda del pronóstico del tiempo se llama CRON. El nombre se deriva de “cronológico”, que se traduce aproximadamente como “en orden de tiempo”.

La mayoría de los sistemas hoy en día tienen algún concepto de cron. Los sistemas basados ​​en Unix (Unix, Linux, macOS, etc.) en realidad tienen una versión de un cron tradicional. Si bien algunos pueden ponerles una interfaz gráfica más amigable, todos se reducen a un programa llamado cron y un archivo llamado crontab.

El programa cron siempre se está ejecutando en segundo plano y cada minuto mira el crontab y averigua si es necesario hacer algo. Si no, vuelve a dormir.

El archivo crontab contiene cuándo se debe ejecutar un programa y qué programa se debe ejecutar. Cada línea representa una tarea diferente. Se ven parecido a esto:

1 0 * * * ~/fetchForcast.sh

Si bien esto puede parecer críptico, todo lo que le dice a cron es que a las 12:01 AM todos los días, ejecute un programa llamado fetchForcast.sh. Aquí te dejo una guía fácil para leer un crontab:

# ┌───────────── minutos (0 – 59)

# │ ┌───────────── horas (0 – 23)

# │ │ ┌───────────── día del mes (1 – 31)

# │ │ │ ┌───────────── mes (1 – 12)

# │ │ │ │ ┌───────────── día de la semana (0 – 6) (Sábado a Domingo;

# │ │ │ │ │                                   7 también es Domingo en algunos sistemas)

# │ │ │ │ │

# │ │ │ │ │

# * * * * * <comando para ejecutar>

  1 0 * * * ~/fetchForcast.sh

Ahora que tienes la clave, es bastante fácil, ¿eh?

Esto es realmente todo lo que hay en un cron tradicional. La mayoría de los hosting como SiteGround te permiten acceder al cron de tu sistema. A veces, tienes que editar el crontab manualmente, pero muchos hosting tienen una interfaz mucho mejor para facilitar su uso. De cualquier manera, tienes la capacidad de ejecutar programas en un momento específico y de forma regular.

¿Qué es WP-CRON?

WordPress hace las cosas de manera un poco diferente. Debido a que muchos autores de plugins necesitaban poder programar las cosas para que sucedan regularmente, y debido a que muchos propietarios de sitios WordPress no saben dónde está su crontab, y mucho menos cómo editarlo, WordPress reinventó el cron.

En esencia, WP-CRON actúa como un cron tradicional en el sentido de que un desarrollador puede “programar” una tarea para que se realice de forma regular. Sin embargo, a diferencia de un cron tradicional, WordPress no tiene un programa que siempre se ejecute en segundo plano en tu servidor. Entonces, para hacerlo, WP-CRON es un proceso que se llama cada vez que se ve una página. En sitios web concurridos, esto funciona bien. Sin embargo, si tu web no es muy visitado, una tarea programada para las 2:00 a.m. podría ejecutarse a las 5:24 a.m. si nadie visita tu web hasta entonces. A veces esto está bien, otras veces es un problema.

Si las tareas que necesitas ejecutar son urgentes y deben ejecutarse a la hora programada, WP-CRON no es el programador que debes utilizar. Si, por otro lado, las tareas que debe realizar pueden ejecutarse “aproximadamente” en el momento en que las programas, entonces WP-CRON está bien. Nuevamente, depende mucho de lo visitado que sea tu sitio web.

¿Cuáles son las alternativas?

Si tienes tareas que son urgentes y tu proveedor de hosting no te permite acceder al cron del sistema, tienes 2 alternativas.

Primero, puedes cambiar a un proveedor como SiteGround que te brinde este acceso. Si esto no te es posible, hay varios servicios gratuitos o de pago que no son más que servicios cron. Ejecutan cron y puedes configurar un trabajo para que se ejecute a través de una interfaz web amigable. El trabajo usaría un programa como curl o wget que conectan a las URL de tu sitio web para activar una tarea específica.

La mayoría de los plugins que requieren un cron te darán la URL a la que conectar si deseas usar un cron externo. Todo lo que tienes que hacer es pegar esa URL, configurar el tiempo para que se ejecute y listo.

CRON es una herramienta de mucho valor y una vez que comprendas cómo trabajar con ella, encontrarás cómo darle más usos. Si tienes plugins, casi te puedo garantizar que tu sitio web tiene trabajos wp-cron en ejecución. Si tienes curiosidad, ve al repositorio de plugins de WordPress y busca cron. Hay plugins que puedes instalar que te mostrarán toda la actividad de WP-CRON en tu sitio web. Pero ten mucho cuidado. Los plugins los establecen por una razón. Si decides que no te gusta uno y lo eliminas, el plugin que depende del trabajo del WP-CRON dejará de funcionar.

Cal Evans

Evangelista PHP

Una de las personas más admiradas de la comunidad PHP, que ha dedicado más de 16 años a construir la increíble comunidad PHP y asesorar a la próxima generación de desarrolladores. Nos sentimos extremadamente honrados de que él también sea un amigo muy especial de SiteGround.

Iniciar discusión

Ha llegado el momento de practicar