Cómo evitar el tiempo de espera (timeout) en scripts CGI

8 mar 2016, 09:30:35
Vistas: 16.3K
Votos: -1

Tengo un error en Apache proveniente de /wp-cron.php. No he modificado ese archivo. ¿Cómo puedo evitar el timeout?

2
Comentarios

Necesitas encontrar qué tarea programada (cron job) de tus plugins está causando el tiempo de espera. También prueba wp-cron control, es genial para evitar condiciones extrañas que resulten en múltiples ejecuciones de wp-cron al mismo tiempo, lo cual podría ser (no lo puedo saber con certeza) la causa de tu problema.

cybmeta cybmeta
8 mar 2016 09:55:08

@cybmeta Primero probaré mi respuesta, intentaré encontrar cuál de los plugins lo está causando. Necesito mantener mi plugin. Gracias de todos modos.

Jows Jows
8 mar 2016 10:06:12
Todas las respuestas a la pregunta 1
5

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.

  1. Inicia sesión en cPanel
  2. En la sección Avanzado, haz clic en Cron Jobs.
  3. Selecciona "Una vez por hora" en el menú desplegable de Configuraciones Comunes.
  4. Ahora selecciona "Cada 6 horas" en el menú desplegable de Hora.
  5. 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.

  6. 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

8 mar 2016 10:02:57
Comentarios

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.

cybmeta cybmeta
8 mar 2016 10:30:58

@cybmeta No entiendo. ¿Qué debería hacer si dices que no es recomendable?

Jows Jows
8 mar 2016 10:46:20

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.

cybmeta cybmeta
8 mar 2016 11:52:28

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.

Sas3 Sas3
2 oct 2017 05:30:52

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.

Mark Kaplun Mark Kaplun
2 oct 2017 08:10:48