WP-Cron. Cómo gestionar las tareas programadas en WordPress

Publicada en WordPress.

Mira nuestro vídeo

Existe una versión mejor de tu web

Comparte este artículo

Cron es una herramienta en sistemas UNIX (Linux, Mac, etc) que sirve para programar tareas y que se ejecuten de forma automática cuando llegue el momento. Normalmente se usa para programar tareas periódicas (por ejemplo, comprobar si existen actualizaciones de sistema, descargar los emails del servidor a mi gestor de correo local o realizar copias de seguridad), aunque también puede usarse para ejecutar tareas puntuales (como, por ejemplo, preparar el equipo para que descargue un fichero de Internet durante la noche).

Como puedes imaginar, también WordPress necesita poder ejecutar tareas de forma periódica. Un par de ejemplos clásicos de ello son la publicación de entradas programadas o la instalación de actualizaciones automáticas del core. Aunque en teoría debería ser posible usar la herramienta cron del servidor donde WordPress está alojado, esta puede no estar disponible por múltiples motivos, así que el equipo del Core de WordPress implementó su propia solución para programar y ejecutar tareas de forma periódica: WP-Cron.

WP-Cron

WP-Cron es una pequeña funcionalidad incluida en el núcleo de WordPress que se usar para programar y ejecutar tareas (tanto puntuales como periódicas). Como te digo, existen varias características de WordPress que usan WP-Cron (publicación de entradas, actualizaciones, etc), pero también puede ser usado (y abusado) por los plugins que tengas instalados.

El funcionamiento de WP-Cron es muy sencillo. Cada vez que un visitante accede a alguna página de WordPress, WP-Cron se activa y comprueba si hay alguna tarea programada que deba ejecutarse. Si la hay, WordPress la ejecuta durante el proceso de atender a la petición de dicho usuario.

Peligros de WP-Cron

El primer peligro que tenemos con WP-Cron es debido a una limitación técnica. Dado que WP-Cron únicamente se ejecuta cuando un visitante pide una página, es posible que en webs con bajo tráfico una tarea esté programada para ejecutarse en un cierto momento, pero que dicha tarea no se ejecute hasta que un visitante llegue a tu web. Por ejemplo, podrías programar una tarea para el próximo sábado a las 8 de la mañana, pero si el primer visitante del sábado no llega hasta las 3 de la tarde, la tarea no se ejecutaría hasta las 3.

El segundo peligro al que nos enfrentamos con WP-Cron es que las tareas programadas tienen un impacto negativo en los tiempos de carga de tu web. Si un visitante llega a tu web y WP-Cron se pone a ejecutar una tarea lenta durante la petición de dicho visitante, WordPress tardará más de lo habitual en servirle la página (porque no podrá hacerlo hasta que no complete la tarea ¡o las tareas, en plural! programadas).

El tercer peligro que podemos encontrar con WP-Cron es que las tareas no lleguen a ejecutarse jamás. Si disponemos de un sistema de cache o nuestra web está detrás de un CDN, es posible que la propia cache satisfaga las peticiones entrantes y no sea necesario pedirle a WordPress que genere la página. La consecuencia de esto es obvia: si no hay necesidad de que WordPress se ejecute, no hay forma de que las tareas se ejecuten tampoco (ya que, recordemos, «WP-Cron se ejecuta cuando WordPress está sirviendo una página a un visitante»).

Solución a los problemas de WP-Cron

Estos tres problemas de WP-Cron son bien conocidos por todos y, por ello, existe una solución para mitigarlos por completo. Básicamente, hay que desactivar WP-Cron para que no se ejecute cuando hay peticiones a una página y hay que configurar una herramienta externa (el cron de nuestro servidor) para que lance una petición específica a WordPress con la que, ahora sí, ejecutar las tareas programadas pendientes.

Te dejo con algunos tutoriales sobre cómo hacerlo en diferentes proveedores de hosting:

WP Control y la gestión de tareas programadas desde el escritorio de WordPress

Por defecto, WordPress no ofrece ningún mecanismo para gestionar las tareas que hay programadas en tu instalación. Pero a veces un desarrollador o incluso un usuario de WordPress querrá poder comprobar qué tareas hay programadas, cuándo van a ejecutarse o incluso forzar su ejecución de forma manual en un momento determinado… ¿Qué podemos hacer en estos casos?

Pues, como siempre, la solución la tenemos en el ecosistema de plugins de WordPress . En concreto, para la gestión de tareas programadas de WordPress te recomiendo el plugin WP Control. Este plugin permite:

  • Ver todas las tareas programadas junto a los parámetros que usan, su periodicidad, la función asociada que se ejecutará cuando llegue el momento y cuándo está programada su próxima ejecución.
  • Editar, eliminar o ejecutar inmediatamente cualquier tarea programada.
  • Programar nuevas tareas.
  • Borrar tareas en lote.
Captura de pantalla de WP Control
Captura de pantalla de WP Control.

Como puedes ver, las tareas programadas de WordPress son muy útiles, aunque debemos ser cuidadosos y asegurarnos de que no van a ralentizar nuestra web. Por suerte, los proveedores de hosting nos ofrecen mecanismos para optimizar la ejecución de WP-Cron y, además, tenemos también a nuestra disposición diferentes plugins que nos permiten hacer un seguimiento exhaustivo de qué tareas hay programadas y controlar cuándo y cómo deben ejecutarse.

Imagen destacada de JESHOOTS.COM en Unsplash.

2 comentarios en «WP-Cron. Cómo gestionar las tareas programadas en WordPress»

  1. El plugin se llama WP-Crontrol (festival del marketing). Muy bien artículo, como siempre 🙂

Deja una respuesta

No publicaremos tu correo electrónico. Los campos obligatorios están marcados con: •

He leído y acepto la Política de privacidad de Nelio Software

Al marcar la casilla de aceptación estás dando tu legítimo consentimiento para que tu información personal se almacene en SiteGround y sea usada por Nelio Software con el propósito único de publicar aquí este comentario. Contáctanos para corregir, limitar, eliminar o acceder a tu información.