¿WGET tiene tiempo de espera?


Estoy ejecutando un script PHP a través de cron usando Wget, con el siguiente comando:

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

El script tomará un máximo de 5-6 minutos para hacer su procesamiento. ¿WGet lo esperará y le dará todo el tiempo que necesita, o se agotará el tiempo?

Author: mmdanziger, 2010-02-18

4 answers

De acuerdo con la página de manual de wget, hay un par de opciones relacionadas con los tiempos de espera related y hay un tiempo de espera de lectura predeterminado de 900s so así que digo que, sí, podría timeout.


Estas son las opciones en cuestión:

-T seconds
--timeout=seconds

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


Y para esas tres opciones :

--dns-timeout=seconds

Conjunto el tiempo de espera de búsqueda DNS a segundos segundo.
Búsquedas de DNS que no completar dentro del tiempo especificado fallará.
Por defecto, no hay tiempo de espera en búsquedas de DNS, que no sea la implementada por las bibliotecas del sistema.

--connect-timeout=seconds

Establezca el tiempo de espera de conexión en segundos segundo.
Conexiones TCP que toman más tiempo para establecer será abortado.
Por defecto, no hay conexión tiempo de espera, distinto del implementado por sistema biblioteca.

--read-timeout=seconds

Establezca el tiempo de espera de lectura (y escritura) en segundos segundos.
El "tiempo" de este tiempo de espera se refiere al tiempo de inactividad: si, en cualquier momento de la descarga, no hay datos se recibe por más de número especificado de segundos, lectura falla y la descarga se reinicia.
Esta opción no afectar la duración de todo el descargar.


Supongo que 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 más de la duración de su script.

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

 120
Author: Pascal MARTIN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-06 18:52:45

El tiempo de espera predeterminado es de 900 segundos. Puede especificar diferentes tiempos de espera.

-T seconds
--timeout=seconds

El valor predeterminado es reintentar 20 veces. Puede especificar diferentes intentos.

-t number
--tries=number

Enlace: documento de wget man

 25
Author: hIpPy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-11 04:59:50

Ya que en su pregunta usted dijo que es 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 wget termina, el script PHP continúa siendo procesado al menos hasta que no excede el límite max_execution_time (directiva ini: 30 segundos por defecto).

De acuerdo con wget anyay no debe cambiar su tiempo de espera, de acuerdo con el manual de UNIX el tiempo de espera predeterminado de wget es de 900 segundos (15 minutos) , whis es mucho mayor que los 5-6 minutos que necesitas.

 6
Author: Marco Demaio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-19 15:57:46

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

 3
Author: Dean Rather,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-14 06:54:28