WGET超时吗?

Cli*_*ote 73 linux cron wget

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

wget -O - -q -t 1 http://www.example.com/cron/run
Run Code Online (Sandbox Code Playgroud)

脚本最多需要5-6分钟才能完成处理.WGet会等待它并将它所有时间都给它,或者它会超时吗?

Pas*_*TIN 132

根据wget的手册页,有一些与超时相关的选项 - 并且默认读取超时为900s - 所以我说,是的,它可能会超时.


以下是有问题的选项:

-T seconds
--timeout=seconds
Run Code Online (Sandbox Code Playgroud)

将网络超时设置为秒秒.这相当于同时指定--dns-timeout,, --connect-timeout--read-timeout.


对于这三个选项:

--dns-timeout=seconds
Run Code Online (Sandbox Code Playgroud)

将DNS查找超时设置为秒秒.
在指定时间内未完成的DNS查找将失败.
默认情况下,DNS查找没有超时,除了系统库实现的超时.

--connect-timeout=seconds
Run Code Online (Sandbox Code Playgroud)

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

--read-timeout=seconds
Run Code Online (Sandbox Code Playgroud)

将读取(和写入)超时设置为秒秒.
此超时的"时间"是指空闲时间:如果在下载中的任何时刻没有收到超过指定秒数的数据,则读取失败并重新开始下载.
此选项不会直接影响整个下载的持续时间.


我想用类似的东西

wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run
Run Code Online (Sandbox Code Playgroud)

应确保在超过脚本持续时间之前没有超时.

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

  • --timeout = 0将禁用超时 (28认同)
  • `-t`选项似乎是`--tries`的别名,*将重试次数设置为number.*;;; 它似乎与任何类型的超时没有关系,但是如果出现错误,wget将重新尝试下载的次数 - 并且您可能不希望超时被视为错误,并且脚本被重新调用. (3认同)

hIp*_*pPy 30

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

-T seconds
--timeout=seconds
Run Code Online (Sandbox Code Playgroud)

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

-t number
--tries=number
Run Code Online (Sandbox Code Playgroud)

链接:wget man文档


Mar*_*aio 7

因为在你的问题中你说它是一个PHP脚本,也许最好的解决方案就是简单地添加你的脚本:

ignore_user_abort(TRUE);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,即使wget终止,PHP脚本也会继续处理,直到它不超过max_execution_time限制(ini指令:默认为30秒).

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


Dea*_*her 6

在版本1.14之前,如果由于错误而通过https下载,则不遵守wget超时参数.