2017-03-14 28 views
0

我使用curl命令玩耍,看着相應的lib捲曲代碼時,我注意到以下幾點:當我查看libcurl代碼時,Curl連接超時和最大時間選項值發生變化。爲什麼和它代表什麼?

我的命令:

curl --max-time 1 --connect-timeout 1 -H "User-Agent: ikandaswamy" https://api.github.com/users/ikandaswamy/repos --libcurl newtext 

newtext

curl_easy_setopt(hnd, CURLOPT_TIMEOUT_MS, 1000L); 
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.43.0"); 
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1); 
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L); 
curl_easy_setopt(hnd, CURLOPT_CONNECTTIMEOUT_MS, 1000L); 

如果你看到上面, CURLOPT_TIMEOUT_MS和CURLOPT_CONNECTTIMEOUT_MS都是1000(長)。從捲曲中我看到超時是以秒爲單位的。爲什麼它被轉換爲1000?

回答

0

_MS選項名稱後綴是線索!它代表毫秒,因此一秒變爲1000毫秒...

順便提一下,CURLOPT_TIMEOUT_MSCURLOPT_CONNECTTIMEOUT_MS手冊頁中也記錄了這一事實!

雖然--connect-timeout選項接受秒,但它也接受指定爲十進制數的秒,其中包含秒的小數部分,如2.347秒,爲了將該精度傳遞給libcurl,它使用毫秒選項版本。

+0

謝謝。是否有一個原因,它默認使用_MS而不是CURLOPT_TIMEOUT?因爲文檔說超時在幾秒鐘內。 – kbinstance

+0

什麼文件? CURLOPT_TIMEOUT和CURLOPT_TIMEOUT_MS是採用不同輸入的兩種不同選項。前一秒,後一毫秒。正如文件所述。 –

+0

選項文檔--connect-timeout表示--connect-timeout SECONDS允許連接的最大時間。所以我期望生成的lib curl在其代碼中使用CURLOPT_TIMEOUT。但是它使用了_MS。我想知道爲什麼。 – kbinstance

相關問題