WGET是否超时?


83

我正在使用Wget通过cron通过以下命令运行PHP脚本:

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

该脚本最多需要5-6分钟来进行处理。WGet是否会等待它并一直提供它所需的时间,还是会超时?

Answers:


145

根据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

应该确保没有超时时间超过脚本的持续时间。

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


如果我设置-t 0,它将无限期等待吗?
点击Upvote 2010年

4
-t选项似乎是的别名--tries,该别名将重试次数设置为number。;;; 它似乎与任何超时都不相关,但是与出现错误时wget将重试下载的次数有关,并且您可能不希望将超时视为错误,并且脚本被重新调用。
Pascal MARTIN

31
--timeout = 0将禁用超时
MiniScalope 2010年

我可能是地球上的那个,但对于ubuntu 16,wget只是忽略的值--timeout。可能是因为我在命令中使用了基本身份验证
Kirill Oficerov

35

默认超时为900秒。您可以指定其他超时。

-T seconds
--timeout=seconds

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

-t number
--tries=number

链接:wget man文档


7

由于在您的问题中您说这是一个PHP脚本,所以最好的解决方案可能是简单地添加您的脚本:

ignore_user_abort(TRUE);

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

按照wgetanyay,你不能改变它的超时,根据UNIX手册 默认wget的超时时间为900秒(15分钟),WHIS要大得多,你需要5-6分钟。


7

在版本1.14之前,由于bug导致通过https下载时,不遵循wget超时参数。


该死的!CentOS 6附带了wget 1.12,我通过https链接遇到了同样的问题
雏菊

我有完全相同的错误!Wget在https链接已过期的证书处停止!
Dylan B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.