Blog Destacada Cron Jobs

Cómo configurar Cron Jobs de WordPress manualmente

Resumen:

  1. Agregá el siguiente código a tu wp-config.php

    define( ‘DISABLE_WP_CRON’, true );
  2. Pedile a tu empresa de hosting que configure el siguiente cron en tu cuenta cada 5 o 10 minutos.

    wget -q -O – https://tudominio/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Y listo, de ésta forma evitarás que WordPress tenga que encargarse de eso, reduciendo su carga.

En el sistema operativo Linux, se denomina “Cron” (‘cronos‘, tiempo) a una tarea programada para ejecutarse en un momento específico. En otras palabras, en un día determinado de la semana y a determinada hora, o bien cada cinco minutos, o bien en el intervalo de tiempo que se desee, se ejecutará automáticamente en el sistema un compendio de instrucciones previamente estipuladas en un archivo llamado “crontab“. Este archivo contiene los procesos repetitivos que deben re-ejecutarse en el tiempo programado.

Ahora, ¿por qué las tareas programadas vuelven a mi sitio más lento? Paciencia, que en esta guía te lo vamos a explicar todo…

Configurando Cron Jobs externos para mejorar la velocidad de mi sitio en WordPress

A razón de verdad, WordPress cuenta con su cron natal para ejecutar operaciones programadas sin intervención humana. Ejemplo de su utilidad es el envío pogramado de correos, la publicación automática de un post que fue oportunamente programado para aparecer online tal día a tal fecha, o la creación de backups a intervalos regulares.

Pero WPcron no funciona de manera idéntica a como lo hace Crontab; de hecho, ni siquiera apela a él a pesar de que en servidores Linux siempre estará funcionando este último. El funcionamiento de WPcron hasta podrá sorprenderte: necesita de visitas. En efecto, una visita a una entrada o sección de tu sitio dispara el funcionamiento de WPcron, que entonces buscará tareas pendientes para ejecutarlas. Es bastante singular, y, por otro lado, encierra complicaciones. Ya te habrás dado cuenta de que si en determinado tiempo tu sitio no goza de visitas, una tarea programada, como la publicación agendada de un post o el envío de un reporte generado por algún componente no se producirá.

Pero, por otro lado, si tu sitio cuenta con muchas visitas diarias, cada una de esas visitas activa WPcron de nuevo. Si en un minuto tienes diez visitas, entonces WPcron funcionará diez veces, lo que claramente es del todo inútil, además de ocupar recursos innecesarios. Si posees contenido con muchas visitas por minuto, ya puedes asumir que tantas ejecuciones de PHP de parte de WPcron están volviendo lento a tu sitio.

Cómo desactivar WPcron (y cómo lo reemplazo)

Para desactivar el cron natal de WordPress debes modificar un archivo de texto llamado wp-config.php

Este archivo debería existir en la raíz de tu sitio, y cuando posees un proveedor de hosting que te brinda cPanel (como Duplika) es muy fácil editarlo.

Nota complementaria: si tu proveedor de hosting no posee cPanel, deberás apelar a un programa de acceso FTP, como el gratuito filezilla.

Ingresa a tu cPanel (tipeando en tu explorador cpanel.tuSitio.com y logueándote con tus credenciales) y localiza la herramienta como te mostramos en la captura inferior:

Tras haber hecho clic en el administrador de archivos, localiza el archivo mencionado según te lo indicamos.

Una vez que seleccionas el archivo, la opción “Editar” se encenderá en la barra superior de herramientas, así:

Tras un clic en “Editar”, es probable que te topes con la siguiente ventana emergente:

El mensaje alerta dos cuestiones: la primera, que deberías realizar una copia de seguridad del archivo por si algo sale mal. Es fácil realizar esto de antemano, eligiendo “Descargar” en lugar de “Editar” dentro de la barra superior de herramientas. Si deseas realizar una copia de seguridad de wp-config.php ahora, simplemente elige “Cancel” y, con el archivo en cuestión aún seleccionado, presiona “Descargar” (captura inferior). Caso contrario, ignora este paso.

La segunda cuestión que nos alerta refiere a la codificación del archivo wp-config.php. Es una alerta genérica, y como vamos a añadir una línea de código al archivo sin modificar ningún otro aspecto, vamos a cliquear directamente en “Editar” para comenzar la edición.

Por fin estamos viendo el contenido de texto de nuestro archivo wp-config.php

Además, comprobamos el botón azul de “Guardar cambios” (que presionaremos tras haber terminado la edición) o el botón “Cerrar”, por si no estamos seguros de lo que estamos haciendo, o creemos que por error hemos borrado o modificado algo indebido. Pero tranquilos, que la operación que sigue es muy fácil.

Buscarán la primera línea, aquella que reza:

define( 'DISABLE_WP_CRON', true );

En la siguiente captura te mostramos el resultado final:

Realizado el añadido de la línea de código, haremos clic en el botón azul de “Guardar Cambios” y con esto habremos instruido a nuestra instalación de WordPress a ignorar su herramienta natal de cron.

Pero como imaginarás, tener una herramienta que permita tareas automatizadas pre-agendadas NO es algo que podamos pasar por alto, así que continuemos con la guía.

¿Cómo configuro un cron externo para mi WordPress?

Lo que hemos hecho en el paso anterior es desactivar el WPcron que, como te comentamos ya, funciona con cada visita; entonces, necesitamos un plan alternativo (y mejor) para disparar tareas programadas en un horario o intervalo específico.

La clave es realizar un llamado a MiSitio.com/wp-cron.php?doing_wp_cron cada cierta cantidad fija de minutos, y en esta guía te vamos a comentar tres maneras de lograrlo (según tengas o no cPanel, o bien un VPS).

Si tengo cPanel

De nuevo en tu cPanel, escrolea las herramientas posibles hasta dar con el ícono de la herramienta “Trabajos de Cron” (captura inferior).

En la pantalla que se abre, ubica la siguiente región escroleando hacia abajo si hace falta:

Y programa tu trabajo de cron de la siguiente manera, empleando los campos desplegables:

Para ejecutar el cron con PHP directamente, podemos usar:

php -q /home/usuario/public_html/wp-cron.php

Reemplazando “usuario” por tu usuario de cPanel.

Otra alternativa es usar wget de la siguiente forma:

wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Haz clic en el botón azul “Añadir nuevo trabajo de cron”, ¡y listo! Si has podido realizar este último paso, no hace falta que sigas leyendo. Te felicitamos por haber mejorado la velocidad de tu sitio, y te deseamos buena suerte en tus emprendimientos. Caso contrario, sigue leyendo…

Mi proveedor de Hosting NO me brinda cPanel. ¿Cómo lo resuelvo?

Si tu proveedor de hosting no te ofrece cPanel, puedes resolver el llamado a wp-cron.php con ayuda del servicio que presta EasyCron.

EasyCron, si bien es un servicio que requiere de la creación de una cuenta e intenta que lo compres, ofrece sin embargo la opción GRATIS de crear un cron job o tarea de cron remota cada 20 minutos. Es más que suficiente para nuestros propósitos, así que vamos a crearnos una cuenta en su sitio ahora mismo.

Nota: el servicio se encuentra en inglés, pero si sigues nuestras indicaciones y flechas de color, no tendrás problemas si no estás familiarizado con dicho idioma.

A continuación cliquea en el link señalado por la flecha:

En la ventana emergente escribe tu correo y tipea una contraseña de tu preferencia. Hecho esto, verás la siguiente pantalla, y harás clic en el botón señalado:

La ventana emergente que aparecerá lucirá de la siguiente manera:

Esta ventana funciona como un formulario en donde deberás completar algunos campos según te indicamos abajo.

Y tras cliquear en el botón azul de “Create Cron Job” puedes dar por terminada la creación de un llamado remoto a tu cron con todo éxito. Si has completado los pasos hasta aquí no es necesario que sigas leyendo, pero si posees un VPS entonces te recomendamos aplicar la práctica descripta en el siguiente punto.

Tengo un servidor VPS: ¿cuál es el comando para crear esto a nivel servidor?

Excelente. Loguéate a tu VPS (SSH) e ingresa el comando siguiente para poder editar tu archivo crontab.

crontab -e

En la ventana de edición del archivo crontab, añade el comando siguiente:

wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Recuerda que con el comando :wp podrás salir del editor.

Con esto habrás terminado de crear un cronjob externo al natal de WordPress, no solamente más rápido sino también más eficiente.

Conclusión Final

Te hemos explicado la naturaleza de un cron job, su utilidad, y el modo particular en que funciona en WordPress.

Creemos que ha quedado claro el beneficio de detenerlo natalmente en WordPress para ser reemplazado por un método externo mucho más consistente (y que se traduce en velocidad para tu sitio).

Si te han quedado dudas, anímate a escribirnos en los comentarios, o bien dirígete a [email protected]

Estamos para ayudarte.

Éxitos para tu sitio, y gracias por leer.

Somos Duplika

Dale a tu sitio el hosting que se merece


Compartir: