我正在使用Wget通过cron运行PHP脚本,使用以下命令:
wget -O - -q -t 1 http://www.example.com/cron/run
脚本最多需要5-6分钟才能完成处理。 WGet会等待它并将它给予它所需的所有时间,还是会超时?
答案 0 :(得分:126)
根据the man page of wget,有几个与超时相关的选项 - 并且默认读取超时为900秒 - 所以我说,是的,它可能会超时。
以下是有问题的选项:
-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
应确保在超过脚本持续时间之前没有超时。
(是的,这可能是最残酷的解决方案^^)
答案 1 :(得分:26)
默认超时为900秒。您可以指定不同的超时。
-T seconds
--timeout=seconds
默认是重试20次。您可以指定不同的尝试。
-t number
--tries=number
link:wget man document
答案 2 :(得分:6)
因为在你的问题中你说它是一个PHP脚本,也许最好的解决方案就是简单地添加你的脚本:
ignore_user_abort(TRUE);
这样即使wget
终止,PHP脚本也会继续处理,直到它不超过max_execution_time
限制(ini指令:默认为30秒)。
根据wget
任意你不应该更改其超时,according to the UNIX manual 默认wget超时为900秒(15分钟),威尔要大于5-你需要6分钟。
答案 3 :(得分:5)
在版本1.14之前,如果由于bug而通过https下载,则不会遵守wget超时参数。
答案 4 :(得分:1)
wget 超时值都与下载文件所需的时间无关。
如果您触发的 PHP 脚本在那里闲置了 5 分钟并且没有返回任何数据,则 wget 的 --read-timeout
将在设置为少于执行脚本所需的时间时触发。
如果您实际上是在下载文件,或者如果 PHP 脚本发送回一些数据,例如...进度指示器,那么只要脚本正在执行某些操作,就不会触发读取超时。
wget --help
告诉您:
-T, --timeout=SECONDS set all timeout values to SECONDS
--dns-timeout=SECS set the DNS lookup timeout to SECS
--connect-timeout=SECS set the connect timeout to SECS
--read-timeout=SECS set the read timeout to SECS
因此,如果您使用 --timeout=10
,它将 DNS 查找、连接和读取字节的超时设置为 10 秒。
下载文件时,您可以将超时值设置得非常低,只要您与所连接站点的连接良好,您仍然可以在 5 分钟内下载一个大文件,超时时间为 10 秒。如果您暂时无法连接到站点或 DNS,传输将在 10 秒后超时,然后重试(如果 --tries
aka -t
是 > 1)。
例如,这里我正在从 NVIDIA 下载一个需要 4 分钟才能下载的文件,并且我将 wget 的超时值设置为 10 秒:
$ time wget --timeout=10 --tries=1 https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run
--2021-07-02 16:39:21-- https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run
Resolving developer.download.nvidia.com (developer.download.nvidia.com)... 152.195.19.142
Connecting to developer.download.nvidia.com (developer.download.nvidia.com)|152.195.19.142|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3057439068 (2.8G) [application/octet-stream]
Saving to: ‘cuda_11.2.2_460.32.03_linux.run.1’
cuda_11.2.2_460.32.03_linux.run.1 100%[==================================================================================>] 2.85G 12.5MB/s in 4m 0s
2021-07-02 16:43:21 (12.1 MB/s) - ‘cuda_11.2.2_460.32.03_linux.run.1’ saved [3057439068/3057439068]
real 4m0.202s
user 0m5.180s
sys 0m16.253s
下载4m,超时10s,一切正常。
通常,使用低值超时 DNS、连接和读取是一个好主意。如果您将其保留为默认值 900 秒,则每次 DNS 或 Internet 连接出现问题时,您将等待 15m。