Cómo manejar apropiadamente las tareas programadas en #WordPress

WordPress incluye como parte del sistema que es, un manejador de tareas programadas, una especie de imitación del popular programador de tareas en Linux llamado “cron” aunque mucho mas simple. Este sistema se llama “wp-cron” y es responsabilidad de los desarrolladores saber manejarlo, pero no siempre lo hacen adecuadamente y es donde los usuarios deben meter mano para optimizar el funcionamiento de Cron en su sitio.

WPCron nos permite programar tareas, por ejemplo, cuando queremos que un post sea publicado a una determinada hora, esto queda guardado en wp-cron el cual es ejecutado cada vez que se carga el sitio, con cada página que se muestra se hace una consulta a cron para ver si hay tareas a realizarse y si las hay entonces se trabaja con ellas. Esto agrega carga a nuestro sitio, de mínimo porque tiene que revisar en cada página que se presenta si hay tareas, si no las hay que bien, si las hay… pues tarda un pelín mas en cargar.

Lo que podemos hacer aquí si nuestro servidor es Linux/Unix es delegar este trabajo al verdadero CRON, evitando que se revise wp-cron en cada carga sino que estas tareas se realicen por aparte cada determinado tiempo, lo mas recomendable: cada minuto.

Desactivar WP-CRON

Lo primero que tendremos que hacer es desactivar CRON. Tendremos que editar nuestro archivo de configuración de WordPress wp-config.php en el directorio donde tenemos instalado wordpress. Tendremos que agregar el siguiente codigo:

Que CRON ejecute WP-CRON

Una vez hecho esto WordPress no se encargará mas de revisar si hay tareas programadas. Entonces nos toca a nosotros hacerlo.

Via shell

 

Para esto utilizaremos el editor de cron. La forma mas facil es usar crontab -e  si estamos acostumbrados a los editores en modo texto de Linux/Unix, si no estamos acostumbrados entonces tendremos que hacerlo de otra forma. Lo primero será exportar nuestro listado de cron:

Entonces editaremos el archivo cron.txt y agregaremos el siguiente texto:

No explicaré aquí con gran detalle la sintaxis de cron, para eso pueden ver la wikipedia, pero básicamente estamos pidiendo que  PHP ejecute el wp-cron.php que se encuentra en nuestra instalación de WordPress cada minuto.

Una vez hecho esto, podemos instalar el nuevo cron con el siguiente comando.

 

Via cPanel.

Muchas veces no tenemos acceso a la shell, tal vez estamos en un ambiente compartido o controlado donde el acceso es limitado. Para estos propósitos cPanel incluye un manejador de CRON donde agregar estas entradas es aún mas fácil.

  1. Entrar a cPanel
  2. Dentro de la sección “Avanzadas” o “Advanced” encontraremos “Cron Jobs”.
  3. En las opciones generales seleccionaremos que tan frecuente queremos ejecutar nuestro proceso, de vuelta, lo recomendable es cada minuto.
  4. Ajustamos los valores correspondientes a Hora y Dia, si estan con asterisco significa que es cada hora/dia lo cual está bien.
  5. Introducimos el comando.
    1. /home/userna5/public_html; php -q wp-cron.php
  6. Guardamos nuestro proceso Cron y listo.

NOTA: Tome en cuenta que la ruta es /home/userna5, donde “userna5” es el nombre de usuario que se usa para entrar a cPanel. La ruta la deberá ajustar a donde se tenga instalado WordPress.

Revisando los procesos CRON.

La forma mas fácil de revisar los procesos cron es instalando el plugin Advanced Cron Manager que una vez instalado y activado nos permite ver la lista de procesos y cuando se van a ejecutar. Esto nos permite depurar plugins que no revisan si ya se ha programado una tarea y vuelven a agregar la tarea provocando una saturación y exceso de carga en nuestro sistema.

Si no queremos instalar un plugin siempre podemos revisar la tabla wp_options.

Esto nos devolverá un texto (posiblemente largo) con la descripción de las tareas a realizar. Si queremos eliminar las tareas programadas lo mas facil es hacer esto:

 

Con esto se borran las operaciones programadas, no te preocupes, los plugins y WordPress se encargará de agregar las necesarias de nuevo.


Te ha gustado este articulo?. Crees que le pueda ser útil a alguien más? Compártelo en tus redes sociales!!


Aún no tienes un blog?, necesitas hospedaje web? cuenta con nosotros solo haz click en este botón: