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?
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 ^^ )
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
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.
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 .