PHP: Default cURL timeout value

前端 未结 3 617
死守一世寂寞
死守一世寂寞 2020-12-13 12:24

What is the default PHP cURL timeout value? Can I obtain the value from coding?

相关标签:
3条回答
  • 2020-12-13 12:35

    The defaults are as follows:

    • CURLOPT_FTP_RESPONSE_TIMEOUT: Indefinite
    • CURLOPT_TIMEOUT: Indefinite
    • CURLOPT_TIMEOUT_MS: Indefinite
    • CURLOPT_CONNECTTIMEOUT: 300 seconds
    • CURLOPT_CONNECTTIMEOUT_MS: Indefinite
    • CURLOPT_ACCEPTTIMEOUT_MS: 60 seconds

    Previous answer (for reference):

    My understanding is that CURL obeys the default_socket_timeout unless overriden with CURLOPT_TIMEOUT/CURLOPT_CONNECTTIMEOUT.

    $socket_timeout = ini_get('default_socket_timeout'); // timeout in seconds
    
    0 讨论(0)
  • 2020-12-13 12:37

    It depends on which timeout setting you're talking about.

    cURL offers various options specific to connection timeout settings. Some of these options have a set limit, while others allow transfers to take an indefinite amount of time. In order to understand which values have default settings and which do not, you need to look at libcurl's curl_easy_setopt() function: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

    libcurl lists the following connection timeout specific settings:

    • CURLOPT_FTP_RESPONSE_TIMEOUT: No default (indefinite)
    • CURLOPT_TIMEOUT: No default (indefinite)
    • CURLOPT_TIMEOUT_MS: No default (indefinite)
    • CURLOPT_CONNECTTIMEOUT: Defaults to 300 seconds
    • CURLOPT_CONNECTTIMEOUT_MS: No default
    • CURLOPT_ACCEPTTIMEOUT_MS: Defaults to 60000 ms

    The PHP source code does not override any of the above default settings: https://github.com/php/php-src/blob/master/ext/curl/interface.c. The only somewhat related parameter that the PHP bindings override is CURLOPT_DNS_CACHE_TIMEOUT, changing the default value from 60 seconds to 120 seconds: https://github.com/php/php-src/blob/a0e3ca1c986681d0136ce4550359ecee2826a80c/ext/curl/interface.c#L1926

    One of the other answers stated that PHP will set CURLOPT_TIMEOUT to the value specified in the default_socket_timeout ini setting. I was not able to find anything in the PHP source code to back up this claim, and I was unable to trigger a cURL timeout by downloading a very large file with a default_socket_timeout setting of 1 second.

    0 讨论(0)
  • 2020-12-13 12:51

    None in libcurl. http://curl.haxx.se/mail/lib-2003-05/0097.html

    0 讨论(0)
提交回复
热议问题