2010-02-18 38 views
61

我正在使用wget通过cron PHP脚本,用下面的命令:WGET是否超时?

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

该脚本将采取最大的5-6分钟来完成其处理。 WGet是否会等待并随时提供,否则会超时?

回答

111

the man page of wget,有一对夫妇的有关超时选项 - 并有一个默认读取900S的超时 - 所以我说,是的,它可能超时。


这里是有问题的选项:

-T seconds 
--timeout=seconds 

设置网络超时,以秒 秒。这相当于 指定--dns-timeout, --connect-timeout--read-timeout,全部在相同的 时间。


而对于那些三个选项:

--dns-timeout=seconds 

设置DNS查找超时,以秒 秒。
在指定时间 内未完成 的DNS查找将失败。
默认情况下,DNS查询中没有 超时,而系统库实现的 除外。

--connect-timeout=seconds 

设置连接超时,以秒 秒。
建立时间较长的TCP连接将被中止。
默认情况下,没有连接 超时,除了系统库实现的 。

--read-timeout=seconds 

设置读(写)超时 秒秒。
“时间”的 此超时是指空闲时间:如果 在下载任何一点,没有数据 收到超过几秒钟的 指定数量更多,阅读 失败,在下载重新启动。
此选项不直接 影响整个 下载的持续时间。


我想使用类似

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

应确保有比前脚本的持续时间没有超时。

(是啊,这可能是最残酷的解决方案成为可能^^)

+0

如果我设置-t 0将它无限期地等待? – 2010-02-18 19:30:52

+2

的'-t'选项似乎是'--tries'的别名,其中*重于数量的设置数量。* ;;;它似乎并没有涉及到任何种类的超时,但次数的wget将重新尝试下载,如果有一个错误 - 你可能不希望超时被视为一个错误,脚本被重新调用。 – 2010-02-18 19:33:29

+24

--timeout = 0将禁用超时 – MiniScalope 2010-11-26 20:09:43

25

默认超时时间为900秒。您可以指定不同的超时。

-T seconds 
--timeout=seconds 

默认值是重试20次。您可以指定不同的尝试。

-t number 
--tries=number 

链接:wget man document

6

由于你的问题,你说这是一个PHP脚本,也许是最好的解决方案可能是简单地在你的脚本中加入:

ignore_user_abort(TRUE); 

这样,即使wget终止,PHP脚本继续处理至少不会超过max_execution_time限制(ini指令:默认30秒)。

wget anyay你不应该改变它的超时,according to the UNIX manual默认wget的超时时间为900秒(15分钟),WHIS要大得多,你需要5-6分钟。

3

此前1.14版本,wget的超时参数都没有遵守,如果下载通过https由于bug

+0

该死! CentOS 6附带wget 1.12,我在https链接中遇到同样的问题 – daisy 2016-07-11 07:22:02