为CURLOPT_CONNECTTIMEOUT + CURLOPT_TIMEOUT问题curl req1和rea2相同的curl句柄....

时间:2016-02-18 13:22:54

标签: libcurl

curll_handle = Curl init()

curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 20 )
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 30);

Request1:(curll_handle)

Curl_easy_perform(curll_handle)
For connection = 20 secs
Chal response request = 30 secs

request2:与上面使用的句柄相同

curl_slist_append(headers, "Connection: Close");

Curl_easy_perform(curll_handle)

问题:

Request 1:
    will it use both timeouts(connection and response timeouts) for curl perform?
    what is the total time will take? as per my understand 30 secs(CURLOPT_CONNECTTIMEOUT + CURLOPT_TIMEOUT)

Request 2:
    if we use same request1 curl handle for request2. is it(req2) curl_easy_perform() will d0 both connection and response sequence requestS?
    what the timeout value use for sencond request if use same req1 curl handle? 

1 个答案:

答案 0 :(得分:0)

请求1:

CURLOPT_TIMEOUT是整个操作的最长时间。它不会花更多的时间。你知道它会在30秒内完成,无论成功与否。

CURLOPT_CONNECTTIMEOUT是您允许“连接阶段”的最长时间。如果未在20秒内完成与远程服务器的连接,则传输将返回失败。

时间完全相互独立。因此,如果连接阶段需要19秒,那么传输完成还剩11秒,否则将触发最大超时。

请求2:

使用相同的选项和选项是粘性的,并且在更改之前将是相同的,因此它将具有与请求1完全相同的超时值。

如果保留连接并从请求1重新使用,CURLOPT_CONNECTTIMEOUT将不会触发,因为它已经连接。