Ne WGET délai d'attente?

J'exécute un script PHP 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. Va WGet attendre et lui donner tout le temps dont il a besoin, ou s'il aura le temps?

66
demandé sur mmdanziger 2010-02-18 22:21:32

4 réponses

Selon 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 de lecture par défaut de 900s-donc je dis que, oui, il pourrait timeout.


Voici les options en question :

-T seconds
--timeout=seconds

Définissez le délai d'attente réseau sur secondes deuxième. C'est l'équivalent de spécifier --dns-timeout, --connect-timeout, et --read-timeout, tous à la même temps.


Et pour ces trois options :

--dns-timeout=seconds

Ensemble délai d'attente de la recherche DNS en secondes deuxième.
recherches DNS qui ne le font pas compléter dans le délai spécifié va échouer.
par défaut, il n'y a pas délai d'attente sur les recherches DNS, autres que cela mis en œuvre par les bibliothèques système.

--connect-timeout=seconds

Définissez le délai de connexion sur secondes deuxième.
connexions TCP qui prennent plus longtemps à établir sera avorté.
par défaut, il n'y a pas de connexion délai d'attente, autre que celui implémenté par système bibliothèque.

--read-timeout=seconds

Définissez le délai de lecture (et d'écriture) sur secondes.
le "temps" de ce délai fait référence au temps d'inactivité: si, à tout moment dans le téléchargement, aucune donnée est reçu pour plus de nombre spécifié de secondes, lecture échoue et le téléchargement est redémarré.
cette option ne fonctionne pas directement affecter la durée de l'ensemble télécharger.


Je suppose en utilisant quelque chose comme

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

Devrait s'assurer qu'il n'y a pas de délai d'attente avant plus longtemps que la durée de votre script.

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

120
répondu Pascal MARTIN 2013-08-06 18:52:45

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

-T seconds
--timeout=seconds

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

-t number
--tries=number

Lien: wget homme document

25
répondu hIpPy 2013-07-11 04:59:50

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

ignore_user_abort(TRUE);

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

Selon wget de toute façon, vous ne devriez pas changer son délai d'attente, selon le manuel UNIX le délai d'attente wget par défaut est de 900 secondes (15 minutes) , whis est beaucoup plus grand que les 5 à 6 minutes dont vous avez besoin.

6
répondu Marco Demaio 2012-12-19 15:57:46

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

3
répondu Dean Rather 2014-08-14 06:54:28