Cómo evitar el tiempo de espera (timeout) en scripts CGI
WordPress utiliza un archivo llamado wp-cron.php como un trabajo cron virtual, o tarea programada, para automatizar acciones como publicar entradas programadas, verificar actualizaciones de plugins o temas, enviar notificaciones por correo electrónico y más.
Por defecto, WordPress está configurado para llamar a wp-cron.php cada vez que alguien visita tu sitio web cuando hay una tarea programada pendiente, básicamente para preguntar "¿es hora de hacer algo?".
En sitios con poco tráfico esto está bien, pero cuando llegan muchos visitantes, verificar múltiples veces las tareas programadas puede ser muy ineficiente y causar problemas de uso de recursos en tu servidor, además de ralentizar la carga de tu sitio web.
Deshabilitar el comportamiento predeterminado de wp-cron.php
Podemos decirle fácilmente a WordPress que nos permita manejar manualmente la ejecución de wp-cron.php mediante el archivo wp-config.php.
Abre tu archivo wp-config.php con el Editor de Código del Administrador de Archivos de cPanel. Ve al final de la configuración de la base de datos en wp-config.php, típicamente alrededor de la línea 37.
Añade el siguiente código:
define('DISABLE_WP_CRON', 'true');
Configurar un trabajo cron manual para wp-cron.php
No queremos dejar a WordPress sin ninguna capacidad para automatizar tareas que pueda necesitar realizar. Pero ahora que no se ejecuta por cada visitante, podemos tener mucho más control sobre cuándo ocurren estas tareas.
Para la mayoría de usuarios de WordPress, ejecutar el script wp-cron.php cada 6 horas es perfectamente adecuado. Eso serían solo 4 ejecuciones al día, en comparación con posibles cientos o incluso miles si tu sitio tuvo mucho tráfico ese día.
- Inicia sesión en cPanel
- En la sección Avanzado, haz clic en Cron Jobs.
- Selecciona "Una vez por hora" en el menú desplegable de Configuraciones Comunes.
- Ahora selecciona "Cada 6 horas" en el menú desplegable de Hora.
Finalmente ingresa el código para ejecutar nuestro cron job y haz clic en "Add New Cron Job".
- cd /home/userna5/public_html; php -q wp-cron.php
Donde userna5 es tu nombre de usuario de cPanel.
Ten en cuenta que la ruta /home/userna5/public_html sería para un dominio principal, si estás usando un dominio adicional o tienes WordPress instalado en un subdirectorio, asegúrate de actualizar la ruta.
Deberías ver que tu nuevo cron job se ha añadido exitosamente.
http://www.inmotionhosting.com/support/website/wordpress/disabling-the-wp-cronphp-in-wordpress

6 horas es un tiempo muy alto, adecuado solo para sitios web con muy baja dinámica; no puede ser una recomendación general. Además, wp-cron.php es un script PHP no adecuado para ser ejecutado a través de php-cli. Deberías ejecutarlo mediante el comando wget; de lo contrario puedes terminar con problemas. Por ejemplo, ejecutarlo a través de php-cli establece un tiempo máximo de ejecución ilimitado, lo que deja la puerta abierta a trabajos cron con errores o mal codificados, como parece que tienes, que se mantendrán abiertos indefinidamente hasta que tu servidor colapse.

6 horas puede ser bueno para ti, solo dije que no puede ser una recomendación general. Para mí es 5 minutos. Si 6 horas es bueno para ti, úsalo. Pero realmente recomiendo ejecutar wp-cron.php mediante wget y no a través del comando php-cli.

Si el problema está con las entradas en las tareas programadas de wp-cron (causa de los timeouts), simplemente agregarlas en otro lugar puede no ayudar. Necesitamos saber qué está causando el timeout para solucionar el problema de manera confiable.

esta respuesta es totalmente incorrecta. WordPress cron es problemático en sitios con poco tráfico, pero debería funcionar bien en sitios con alto tráfico. La causa de tus errores probablemente sea código defectuoso en tus plugins o tema. Si tienes un proceso real que necesita más tiempo para completarse, una forma mucho mejor es simplemente cambiar su timeout de PHP en el código. Un cron que se ejecuta cada 6 horas es totalmente ridículo y tarde o temprano romperá algo.
