【问题标题】:PHP: Default cURL timeout valuePHP:默认 cURL 超时值
【发布时间】:2012-05-05 17:44:34
【问题描述】:

什么是默认的 PHP cURL 超时值?我可以从编码中获得价值吗?

【问题讨论】:

    标签: php curl


    【解决方案1】:

    【讨论】:

    • 感谢您的发现。有权威答案吗?
    【解决方案2】:

    默认如下:

    • CURLOPT_FTP_RESPONSE_TIMEOUT:无限期
    • CURLOPT_TIMEOUT:无限期
    • CURLOPT_TIMEOUT_MS:无限期
    • CURLOPT_CONNECTTIMEOUT:300 秒
    • CURLOPT_CONNECTTIMEOUT_MS:无限期
    • CURLOPT_ACCEPTTIMEOUT_MS:60 秒

    上一个答案(供参考):

    我的理解是 CURL 遵循 default_socket_timeout 除非被 CURLOPT_TIMEOUT/CURLOPT_CONNECTTIMEOUT 覆盖。

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

    【讨论】:

    • 你能备份一下吗?我在 PHP curl 绑定 (github.com/php/php-src/blob/master/ext/curl/interface.c) 中找不到任何可以证明这一点的东西。我还尝试将我的default_socket_timeout ini 设置设置为 1 并下载了一个大文件,但 curl 从未超时——这意味着仍在使用默认值 0(无限期)。然后我在 curl 句柄上显式设置了一秒的 CURLOPT_TIMEOUT 值,尝试下载相同的文件,我注意到连接在 1 秒后肯定被切断了。
    • @MichaelDowling 的评论提供了更多信息和证据来回答这个问题。
    • 这些开发者 appear to agree - CURL 不尊重 PHP 的 default_socket_timeout
    • 嘿猛禽......当你有时间......这个答案显然是不正确的(虽然它是一个很好的第一次尝试)并且道林斯的答案是正确的。您(或具有足够管理能力的人)能否将其改为接受的答案?
    【解决方案3】:

    这取决于您所说的超时设置。

    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_TIMEOUT 设置为 default_socket_timeout ini 设置中指定的值。我无法在 PHP 源代码中找到任何支持此声明的内容,并且我无法通过下载 default_socket_timeout 设置为 1 秒的非常大的文件来触发 cURL 超时。

    【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2017-12-25
    • 2021-01-24
    • 1970-01-01
    • 2014-12-08
    • 2011-04-22
    • 2012-04-11
    相关资源
    最近更新 更多