Tareas cron de cPanel

“Programación perdida”, el error mitológico de WordPress

"Programación perdida" - WordPress
«Programación perdida» – WordPress

Esta mañana andaba dando vueltas en las entrañas de Cursos.com, portal para el que trabajo, cuando me he percatado de que no había salido publicada una entrada que había quedado programada. Extrañado me ha dado por ir al panel principal de publicaciones y me he cruzado con un error que jamás pensaría que me iba a encontrar, el de “programación perdida”. Llevo 10 años con WordPress y nunca lo había visto. Vamos a ver qué es y cómo podéis solucionarlo.

Índice de contenidos

En qué consiste el error “programación perdida” de WordPress

No se si estaréis al día con el funcionamiento de los sistemas operativos Linux, BSD y familiares cercanos, pero a groso modo os diré que este tipo de plataformas, para programar eventos periódicos o puntuales, emplean un programa denominado”cron” (más conocido como “demonio”); que no es otra cosa que un programador de tareas (en Windows también hay). El problema es que WordPress no tiene acceso al mismo. De ahí que entre los ficheros de WP exista wp-cron.php, que no es otra cosa que un cron virtual.

[stextbox id=»info»]Dicho esto pensaréis que con esto los programadores de WordPress dieron carpetazo al asunto, ¿verdad? ¡Pues no! Resulta que wp-cron.php solo funciona si se carga una página en el blog.[/stextbox]

Ahora bien, en Cursos.com sí que había tráfico a esa hora; así que…¿cuál era el problema? Los plugins de caché, que como bien sabréis son aquellos que se emplean para que los visitantes puedan acelerar la carga de los sitios con archivos pre-descargados en el navegador. Resulta que si hay visitantes que vuelven wp-cron.php no se ejecuta. ¡Tócate las narices! En nuestro caso el plugin de marras es W3 Total Cache, pero podía haber sido cualquier otro.

Problemas de consumo y errores 500 a raíz de wp-cron.php

Tal y como os comentaba wp-cron.php se ejecuta cada vez que hay una vista, lo que quiere decir que en un sitio con miles de sesiones el script en cuestión estará cargándose cada dos por tres y consumiendo recursos el servidor, lo que hace que se ralentice el sitio y puedan llegar los temidos errores 500 (errores internos del servidor). Como bien sabréis esto puede detectarlo Google, y por ende podría acabar penalizando una web en los resultados de búsqueda.

Soluciones a los problemas del cron virtual de WordPress

Hay varias maneras para salir airosos de esta situación:

  • Programar un cron de verdad en cPanel

    Tareas cron de cPanel
    Tareas cron de cPanel

    ¿Os atrevéis a meter mano en la configuración del servidor? Pues entonces os comento cómo podéis hacer para que este se ocupe directamente de ejecutar wp-cron.php. Independientemente de que haya visitas o no, y de que tengáis instalado un plugin de caché o no. Una solución algo compleja para solucionar el error de programación perdida, pero eficiente a la vez.

    Antes de nada tenéis que desactivar wp-cron.php, y para ello simplemente tendréis que meter la siguiente línea en el código (preferiblemente al inicio):

    [stextbox id=»grey»]define(‘DISABLE_WP_CRON’, true);[/stextbox]

    Una vez hecho vais al panel de vuestro hosting (por lo general cPanel) y buscáis la zona donde esté la opción de “Cron jobs”. Le dais a agregar una nueva tarea indicando cada cuánto tiempo queréis que se ejecute el script (cada 15 minutos es más que suficiente). Obviamente tenéis que indicar al programa (cron) un comando a ejecutar, pues sus posibilidades son enormes. Ahí va la manera más sencilla (fuente Hormigas en la Nube):

    [stextbox id=»info»]wget -O /dev/null http://TUWEB.com/wp-cron.php?doing_wp_cron [/stextbox]

    Obviamente al final confirmáis la tarea dándole a “Agregar tarea cron” o similar.

  • Utilizar un plugin

    Scheduled Post Trigger
    Scheduled Post Trigger

    ¿No queréis complicaros la vida? Pues entonces os recomendo que instaléis un plugin que se ocupe de gestionar las tareas cron. Su nombre es WP Cron (igual al archivo, sí) y solo toca instalar, activar e indicar la dirección de wp-cron.php y el intervalo de ejecución.

    Obviamente también hay plugins que se ocupan básicamente de controlar lo que habéis programado, encargándose ellos de las rutas de marras y demás. Vamos, la solución más sencilla para solucionar el error de programación perdida. ¿Os interesa? Pues un buen ejemplo de este tipo de plugins es Scheduled Post Trigger. Básicamente mira si hay algún artículo programado que no ha sido publicado y se ocupa de ponerlo online.

    Por cierto, tened en cuenta que los plugins consumen recursos, por lo que si tenéis problemas en este aspecto lo suyo sería que configurarais un cron a mano.

Entradas relacionadas

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.