Todo lo que necesitas saber sobre WordPress Cron

,
WordPress Cron

El Cron es algo que usamos a diario, incluso sin darnos cuenta. Está presente en sistemas operativos, aplicaciones webs, etc. En WordPress es conocido como WordPress Cron o WP Cron y se encarga de realizar disímiles tareas que hacen posible que tu sitio sea capaz de responder ante diferentes tareas programadas. En este tutorial podrás conocer que son los Cron Job de forma general, cómo es utilizado en WordPress, qué problemas puede presentar y cómo cambiar el WordPress Cron por un Cron real.

¿Qué son los Cron Jobs?

En sentido general, el Cron es una utilidad que te permite ejecutar comandos o scripts a un tiempo específico. Los Cron Jobs son las tareas resultantes. En pocas palabras: con el Cron podemos ejecutar todas las mañanas un determinado script. El Cron juega un papel importante, por ejemplo, en los respaldos de sitios webs, ya que nos permite programar la corrida automatizada del script de respaldo. Sin esta utilidad habría que correr manualmente el script de respaldo.

¿Qué hace realmente el WordPress Cron?

Uno de los usos más visibles del WordPress Cron son las actualizaciones automáticas del núcleo de WordPress, plugins y temas. Este se encarga de chequear, de forma regular, nuevas actualizaciones y te notifica en caso de existir alguna.

Adicionalmente el WP Cron, se encarga de manejar las publicaciones programadas, el envío de pingbacks y trackbacks, así como otras funcionalidades agregadas por los plugins que tengas instalados.

 ¿Qué tan diferente es el WordPress Cron de los Crons regulares?

WordPress actualmente tiene su propio sistema para correr Cron Jobs. Pero presenta diferencias importantes con respecto a los Crons regulares.

Con un Cron regular, puedes especificar una fecha y hora exactas para ejecutar un trabajo. Una vez que el reloj del sistema tenga la fecha y la hora especificada, correrá el trabajo programado.

En cambio, el WP Cron trabaja diferente. Este solo se ejecuta cuando alguien visita tu sitio. No importa quién lo visite, el WP Cron comprueba si existe alguna tarea programada que necesite ejecutarse. Si encuentra que el tiempo de una tarea programada se ha cumplido, seguirá adelante y la ejecutará. Este comportamiento tiene un problema potencial, si nadie visita tu sitio en un periodo de tiempo, el WP Cron no se ejecutará, por lo que la tarea no podrá ejecutarse.

Supongamos que tenemos un plugin instalado en nuestro sitio que envía correos todos los días a las 3:00 am. Si nadie visita el sitio en esa hora o hasta las 7:00 am, pues hasta esa hora no se enviarán los correos. A veces algunos plugins de caché, problemas de DNS o conflictos de plugins pueden hacer que el WP Cron no se ejecute.

Por otra parte, si tu sitio recibe muchas visitas, el WP Cron puede ralentizar tu sitio debido a que WordPress Cron es posible que no haya terminado de ejecutarse, se lance otro proceso hasta tener corriendo varios procesos a la vez y el tiempo de ejecución de los scripts se agote.

La solución real a estos inconvenientes está en desactivar el WP Cron y agregar un Cron verdadero de Linux. Con esto se logra una mayor eficiencia en la carga de sitios con alto tráfico independientemente de las visitas a tu sitio para ejecutar una tarea programada.

¿Cómo remplazar el WordPress Cron con el Cron de Linux?

Los pasos a seguir se dividen en:

1- Desactivar la función interna del WP Cron

Para ello, abrimos el archivo wp-config.php, localizado en la raíz de tu instalación de WordPress. Agregamos en la parte superior, debajo de “<?php”:

Luego guardamos los cambios.

2- Configurar un cron job real para llamar al WP Cron

Esto normalmente se realiza en el panel de control de tu hosting (si es que estás usando uno). Para agregar en Linux un nuevo cron job, desde el terminal ejecutas el siguiente comando:

El nuevo cron job a agregar debe ejecutarse cada 15 minutos (el tiempo puedes ajustarlo a tus requerimientos), todos los días de la semana, todos los meses, todos los años, quedando:

NOTA: Es importante moverse hacia el directorio de tu sitio y ejecutar el archivo wp-cron.php.

Otra variante puede ser mediante el comando wget, ejecutar el WP Cron:

Incluso puedes utilizar el comando curl (en ocasiones el comando wget suele estar bloqueado…):

Alternando múltiples WordPress Cron Jobs

La creación de múltiples cron Jobs sin una distribución personalizada de los horarios de corrida puede hacer que todos se disparen al mismo tiempo, lo que se puede traducir en un consumo excesivo de CPU, negando el beneficio de usar el Cron de Linux. Para alternar varios cron jobs te recomendamos:

  1. Divide por 60 el número de sitios de WordPress que tienes. Si tienes más de 60, simplemente usa el número 1. Ejemplo: si tienes 6 sitios WordPress, 60 / 6 = 10.
  2. Usa 0 para el primer cron job creado.
  3. Para cada cron job que sigue después del primero, usa como incremento el valor obtenido en el paso 1.

Si sigues los pasos anteriores, aseguras que tus WordPress Cron Jobs se ejecuten una vez por hora, lo cual evita que se solapen entre ellos y mejora el uso de CPU en el hosting.

Punto Final

A lo largo de este tutorial explicamos qué es el WordPress Cron, su funcionamiento y desventajas ante diferentes situaciones, siendo una solución práctica y eficiente sustituirlo por el Cron de Linux.

Existen otros métodos para mejorar el WP Cron. Puedes consultar más información en el sitio de WordPress Codex. También existe un plugin llamado WP Control, el cual te permite desarrollar usando el API del WP Cron, todo desde una interfaz de administración en el dashboard de WordPress.

Pero si todo esto te parece complicado puedes emplear servicios externos como EasyCron.

1 comentario

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja una respuesta

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