93 votes

Est-ce que WGET a un délai d'attente ?

Je lance un script via cron en utilisant Wget, avec la commande suivante :

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

Le script prendra un maximum de 5-6 minutes pour effectuer son traitement. WGet l'attendra-t-il et lui donnera-t-il tout le temps dont il a besoin, ou le temps sera-t-il écoulé ?

156voto

Pascal MARTIN Points 195780

Según la page de manuel de wget Il y a quelques options liées aux délais d'attente - et il y a un délai d'attente de lecture par défaut de 900s - donc je dis que, oui, il pourrait y avoir un délai d'attente.

Voici les options en question :

-T seconds
--timeout=seconds

Définissez le délai d'attente du réseau en secondes secondes. Ceci est équivalent à spécifier --dns-timeout , --connect-timeout et --read-timeout tout en même temps. même temps.

Et pour ces trois options :

--dns-timeout=seconds

Définissez le délai d'attente de la recherche DNS à secondes secondes.
Les recherches DNS qui ne sont pas ne sont pas terminées dans le délai spécifié échoueront.
Par défaut, il n'y a pas de délai d'attente pour les recherches DNS, autre que celui que celui mis en œuvre par les bibliothèques du système.

--connect-timeout=seconds

Définissez le délai de connexion en secondes secondes.
Les connexions TCP qui prennent plus longues à établir seront abandonnées.
Par défaut, il n'y a pas de délai de de connexion, autre que celui implémenté par les par les bibliothèques système.

--read-timeout=seconds

Définissez le délai de lecture (et d'écriture) à secondes.
Le "temps" de ce délai fait référence au temps d'inactivité : si, à un moment quelconque du téléchargement, aucune donnée n'est reçue pendant plus du nombre de secondes spécifié, la lecture échoue et le téléchargement est redémarré.
Cette option n'affecte pas directement directement la durée de l'ensemble du téléchargement.

Je suppose qu'en utilisant quelque chose comme

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

doit s'assurer qu'il n'y a pas de timeout avant plus long que la durée de votre script.

(Ouais, c'est probablement la solution la plus brutale possible ^^ )

0 votes

Si je mets -t 0, est-ce que ça attendra indéfiniment ?

5 votes

El -t semble être un alias de --tries qui Définir le nombre de tentatives à nombre. ;; ; Il ne semble pas être lié à un quelconque délai d'attente, mais au nombre de fois que wget réessayera de télécharger s'il y a une erreur -- et vous ne voulez probablement pas qu'un délai d'attente soit considéré comme une erreur, et que le script soit rappelé.

35 votes

--timeout=0 désactivera le délai d'attente

37voto

hIpPy Points 727

Le délai d'attente par défaut est de 900 secondes. Vous pouvez spécifier un autre délai d'attente.

-T seconds
--timeout=seconds

La valeur par défaut est de réessayer 20 fois. Vous pouvez spécifier des essais différents.

-t number
--tries=number

lien : wget man document

8voto

Dean Rather Points 7856

Avant la version 1.14, les arguments du délai d'attente de wget n'étaient pas respectés lors d'un téléchargement via https en raison d'un problème de type bogue .

0 votes

Mince ! CentOS 6 est livré avec wget 1.12, j'ai eu le même problème avec les liens https.

0 votes

J'ai exactement la même erreur ! Wget s'est arrêté au lien https qui a un certificat expiré !

0 votes

J'ai un Linux avec une version 1.20.3 de wget qui ignore également "-T x" et ne se termine jamais sur une mauvaise IP par exemple, c'est pourquoi j'utilise la commande "timeout" à la place : "timeout 5 wget ..." fonctionne parfaitement dans mon cas.

7voto

Marco Demaio Points 8667

Puisque dans votre question vous avez dit que c'est un script PHP, peut-être que la meilleure solution pourrait être de simplement ajouter dans votre script :

ignore_user_abort(TRUE);

De cette façon, même si wget se termine, le script de PHP continue à être traité au moins jusqu'à ce qu'il ne dépasse pas max_execution_time limite (directive ini : 30 secondes par défaut).

Conformément à wget En tout cas, vous ne devez pas modifier son délai d'attente, selon le manuel UNIX Le délai d'attente par défaut de wget est de 900 secondes (15 minutes). Le whis est beaucoup plus important que les 5-6 minutes dont vous avez besoin.

0voto

Lukas Liesis Points 564

-t nombre

ou

--tries=nombre

Définir le nombre de tentatives à nombre. Spécifiez 0 ou inf pour un nombre infini de infini. Par défaut, les tentatives sont effectuées 20 fois, à l'exception de erreurs fatales telles que " connexion refusée " ou " non trouvé " (404), qui ne sont ne sont pas réessayées.

c'est à partir de la page de manuel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X