Optimizar WP-Cron con Linux Cronjobs


Primero es importante entender la función que wp-cron.php tiene en WordPress, siendo este el encargado de ejecutar todas las tareas que tenemos calendarizadas en el tiempo, por ejemplo la ejecución de respaldos a cierta hora y día, la publicación de algunos posts programados, etc.

Normalmente WordPress ejecuta esta función cada vez que una página es visitada y con esto podemos deducir un par de escenarios:

  • En sitios de bajo tráfico probablemente habrá tareas que no sean ejecutadas en tiempo y hora deseada, debido a que al no recibir una visita wp-cron no se ejecutará y por consiguiente las tareas que tengamos calendarizadas no serán ejecutadas en tiempo.
  • En sitios de alto tráfico generará una carga extra al servidor debido a la excesiva ejecución de esta función.
WordPress Cron wp-cron.php

Por lo anterior es recomendable establecer una manera predecible y constante de ejecutar esta función con el fin de garantizar una ejecución constante de las tareas programadas en WordPress.

Desactivar wp-cron.php

Desactivaremos esta función para evitar la ejecución automática durante cada visita en nuestro sitio. Insertamos la siguiente linea en el archivo wp-config.php localizado en la raíz de nuestra instalación:

define('DISABLE_WP_CRON', true);

Configurar Linux Cron Job

Ahora configuraremos un Cronjob en el servidor para ejecutar wp-cron de manera periódica.
Desde la terminal abrimos crontab:

crontab –e

Y a continuación configuramos la ejecución de wp-cron.php, agregando la siguiente línea al final:

*/5 * * * * curl http://mydomain.com/wp-cron.php > /dev/null 2>&1

Otra alternativa usando wget:

*/5 * * * * wget -q -t 1 -O – http://mydomain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

En el ejemplo anterior se está programando la ejecución de wp-cron.php de manera constante cada 5 minutos; podemos modificar este parámetro para cambiar el periodo, por ejemplo */15 para ejecutarlo cada 15 minutos.

De esta manera, al usar el Crontab de Ubuntu se ejecutara el wp-cron por un proceso independiente en PHP por lo que no afectara el desempeño de nuestro sitio web.

Wp-Cron.php en WordPress Multisite

Es importante considerar que en instalaciones “Multisite” de WordPress cada sub-sitio ejecuta de manera individual su propio wp-cron.


Deja un comentario

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