2010-02-18 9 views
61

estoy ejecutando un script PHP a través de cron utilizando wget, con el siguiente comando:¿Se agota el tiempo de espera?

wget -O - -q -t 1 http://www.example.com/cron/run 

El guión se llevará un máximo de 5-6 minutos para hacer su procesamiento. ¿WGet lo esperará y le dará todo el tiempo que necesite, o pasará el tiempo de espera?

Respuesta

111

Según the man page of wget, hay un par de opciones relacionadas con los tiempos de espera - y hay un tiempo de espera de lectura por defecto de 900 - por eso digo que sí, que podría tiempo de espera .


Estas son las opciones en cuestión:

-T seconds 
--timeout=seconds 

Establecer el tiempo de espera de la red a segundos segundos. Esto es equivalente a especificando --dns-timeout, --connect-timeout y --read-timeout, todo al mismo tiempo .


Y para esas tres opciones:

--dns-timeout=seconds 

Establecer el tiempo de espera de consulta DNS a segundos segundos.
Las búsquedas DNS que no completen dentro del tiempo especificado fallarán.
De forma predeterminada, no hay tiempo de espera en las búsquedas DNS, que no sean implementados por las bibliotecas del sistema.

--connect-timeout=seconds 

Establecer el tiempo de espera de conexión al segundo segundos.
Se suspenderán las conexiones TCP que tarden más de en establecerse.
De forma predeterminada, no hay tiempo de espera de conexión, que no sea el implementado por las bibliotecas del sistema.

--read-timeout=seconds 

Establecer el tiempo de espera de lectura (y escribir) a segundos segundos.
El "tiempo" de este tiempo de espera se refiere a ralentí tiempo: si, en cualquier momento de la descarga, no hay datos es recibida por más de la número especificado de segundos, la lectura falla y la descarga se reinicia.
Esta opción no afecta directamente a la duración de la descarga completa .


supongo usando algo como

wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run 

debe asegurarse de que no hay tiempo de espera antes de largo que la duración de su script.

(Sí, eso es probablemente la solución más brutal posible ^^)

+0

si configuro -t 0 ¿esperará indefinidamente? –

+2

La opción '-t' parece ser un alias de' --tries', que * Establece el número de reintentos al número. * ;;; No parece relacionarse con ningún tipo de tiempo de espera, sino con la cantidad de veces que wget volverá a intentar descargar si hay un error, y es probable que no desee que se considere un tiempo de espera como un error, y el Se vuelve a llamar la secuencia de comandos. –

+24

--timeout = 0 deshabilitará el tiempo de espera – MiniScalope

25

El tiempo de espera predeterminado es de 900 segundos. Puede especificar tiempo de espera diferente.

-T seconds 
--timeout=seconds 

El valor predeterminado es volver a intentar 20 veces. Puede especificar diferentes intentos.

-t number 
--tries=number 

enlace: wget man document

6

Dado que en su pregunta que indican que se encuentra un script PHP, tal vez la mejor solución podría ser simplemente agregar en su script:

ignore_user_abort(TRUE); 

De esta manera, incluso si termina wget, la secuencia de comandos PHP continúa siendo procesada al menos hasta que no exceda el límite max_execution_time (directiva ini: 30 segundos por defecto).

Según wget anyay no debe cambiar su tiempo de espera, el tiempo de espera according to the UNIX manualwget predeterminado es de 900 segundos (15 minutos), whis es mucho más grande que las actas 5-6 que necesitan.

3

Antes de la versión 1.14, los argumentos de tiempo de espera de wget no se cumplían si se descargaban a través de https debido a un bug.

+0

¡Maldición! CentOS 6 se envía con wget 1.12, tengo el mismo problema con los enlaces https – daisy

Cuestiones relacionadas