通过分析使用不同参数组合,访问连接不稳定及完全无法连接的网站而得出的日志,可以得到以下结论。WaitForResponse 就像是所有超时的总和 SetTimeouts 则是总和中的每个子项。
超时既可能因为总和,也可能因为某个子项,还可能因为一个原因未知的,时间总是固定为21秒的条件触发。
所以综合来看,设置超时参数时最好将 解析超时设为0(避免内存溢出) 然后将 连接超时、发送超时、接收超时、总超时 都设置为一样的。
这样当超时时间小于21秒时,一定会以设置的超时为准。
而当超时时间大于21秒时,则会随机的在21秒或设定值时返回。
以下是测试代码。
Code: Select all
loop, 40
{
st:=A_TickCount
ComObjError(0)
wr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
; 解析超时=0 连接超时=60000 发送超时=30000 接收超时=11000
wr.SetTimeouts(0, 60000, 30000, 11000)
wr.Open("GET", "https://raw.githubusercontent.com/telppa/PaddleOCR-AutoHotkey/main/PaddleOCR/Dll/opencv_world452.dll", true)
; wr.Open("GET", "https://www.google.com", true)
wr.Send()
; 总超时=25000
wr.WaitForResponse(25)
FileAppend, % A_TickCount-st "|" wr.Status() "`n", 超时.log
}
ExitApp
以下是不同参数,访问不同网址的超时日志。
Code: Select all
访问 github.com 访问 google.com
参数 0 60 30 11 25 0 8 12 16 4 0 8 12 16 25 参数 0 60 30 11 25 0 8 12 16 4 0 8 12 16 25
-----------------------------------------------------------------------------------------------------------------------
25063|200 4015|200 20015| 25047| 4047| 8016|
25031|200 4016| 8000| 25015| 4015| 8000|
17922| 4047| 19797| 25032| 4016| 8000|
21047| 4015| 8203| 25015| 4016| 8000|
21047| 4047| 8000| 25016| 4015| 8000|
21046| 4016| 25016|200 25016| 4016| 8000|
25032|200 4016| 10984| 25015| 4016| 8015|
21047| 4015| 8000| 21047| 4015| 7985|
25015|200 4016| 8000| 25016| 4016| 8000|
25016|200 4015| 8000| 25015| 4015| 8000|
25062|200 4016| 8000| 25016| 4016| 8000|
11688| 4016| 8000| 25062| 4016| 8000|
12015| 4015| 8000| 25016| 4015| 8000|
21047| 4016| 8000| 25031| 4016| 8000|
21032| 4016| 8000| 25016| 4016| 8000|
21031| 4015| 8000| 25047| 4015| 8000|
21031| 4016| 8000| 25047| 4016| 8000|
21047| 4015| 8000| 25015| 4015| 8000|
21031| 4016| 8000| 25016| 4016| 8000|
21047| 4016| 20000| 25016| 4016| 8000|
21016| 4047| 20000| 25015| 4015| 8000|
25015|200 4015| 8000| 25016| 4016| 8000|
10703| 4016| 8000| 25015| 4016| 8000|
25032|200 4015| 8000| 25016| 4015| 8000|
10968| 4016| 8000| 25016| 4016| 8000|
21047| 4016| 20000| 25015| 4015| 8000|
21032| 4015| 8000| 25016| 4016| 8000|
21062| 4016| 8000| 25016| 4016| 8000|
21047| 4016| 8000| 25015| 4015| 8000|
21031| 4015| 8000| 25016| 4016| 8000|
21047| 4016| 8000| 25015| 4016| 8000|
21719| 4015| 8000| 21016| 4015| 8000|
21047| 4016| 8000| 25016| 4016| 8000|
14953| 4016| 8000| 25015| 4015| 8000|
12000| 4015| 8000| 21032| 4016| 8000|
21031| 4016| 8000| 21046| 4016| 8000|
21047| 4016| 8000| 21047| 4015| 8000|
21047| 4015|200 8000| 21032| 4016| 8000|
21015| 4016| 8000| 25031| 4016| 8000|
21032| 4015| 8000| 25015| 4015| 8000|