2012-04-25 187 views

回答

23

的默認值如下:

  • CURLOPT_FTP_RESPONSE_TIMEOUT:不定
  • CURLOPT_TIMEOUT:不定
  • CURLOPT_TIMEOUT_MS:不定
  • CURLOPT_CONNECTTIMEOUT 300秒
  • CURLOPT_CONNECTTIMEOUT_MS:不定
  • CURLOPT_ACCEPTTIMEOUT_MS: 60秒

以前的答案(供參考):

我的理解是,捲曲服從default_socket_timeout除非CURLOPT_TIMEOUT/CURLOPT_CONNECTTIMEOUT覆蓋。

$socket_timeout = ini_get('default_socket_timeout'); // timeout in seconds 
+7

你能支持這個嗎?我無法在PHP curl綁定中找到證明這一點的東西(https:// github。COM/PHP/PHP-SRC /斑點/主/ EXT /捲曲/ interface.c)。我也嘗試將我的'default_socket_timeout' ini設置爲1並下載了一個大文件,但curl從未超時 - 意味着默認值0(不確定)仍在使用。然後,我明確地在curl句柄上設置CURLOPT_TIMEOUT值爲一秒,嘗試下載同一個文件,並且我注意到連接在1秒後明顯縮短。 – 2013-04-12 23:21:53

+5

@MichaelDowling的評論提供了更多的信息和證據來回答這個問題。 – 2013-08-13 21:58:05

+4

爲什麼這個答案被標記爲正確? – jayarjo 2013-12-02 08:52:56

73

這取決於您正在談論的超時設置。

cURL提供了特定於連接超時設置的各種選項。其中一些選項有一個設定的限制,而其他選項則允許轉賬採取無限期的時間。爲了瞭解哪些值具有默認設置並且不,你需要看看的libcurl的curl_easy_setopt()功能:http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

libcurl中列出了以下連接超時的具體設置:

  • CURLOPT_FTP_RESPONSE_TIMEOUT:無默認值(無限期)
  • CURLOPT_TIMEOUT:無默認值(無限期)
  • CURLOPT_TIMEOUT_MS:無默認值(無限期)
  • CURLOPT_CONNECTTIMEOUT:默認爲300秒
  • CURLOPT_CONNECTTIMEOUT_MS:沒有默認
  • CURLOPT_ACCEPTTIMEOUT_MS:默認爲60000毫秒

PHP源代碼沒有覆蓋上述任何默認設置:https://github.com/php/php-src/blob/master/ext/curl/interface.c。該PHP綁定覆蓋唯一有點相關的參數是CURLOPT_DNS_CACHE_TIMEOUT,改變從60秒的默認值到120秒:https://github.com/php/php-src/blob/a0e3ca1c986681d0136ce4550359ecee2826a80c/ext/curl/interface.c#L1926

一個其他的答案中指出,PHP將設置CURLOPT_TIMEOUTdefault_socket_timeout INI設置指定的值。我無法在PHP源代碼中找到任何東西來備份此聲明,並且我無法通過下載一個具有default_socket_timeout設置爲1秒的非常大的文件來觸發cURL超時。

+0

默認超時時間爲0(零),這意味着它在傳輸過程中永不超時。 http://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html – diyism 2014-11-27 10:09:50

+1

是的。這是在我的答案:'CURLOPT_TIMEOUT:沒有默認(不確定)' – 2014-12-02 00:02:47