如果服务器在 2 秒后没有响应,如何使 cURL 返回 false


How to make cURL return false after if server doesn't respond after 2 second?

我得到了这个功能,现在有时当一个网站关闭或长时间加载时,它会减慢我网站的加载时间。

如果服务器在 2 秒内没有响应,我有没有办法让它只返回 false?如您所见,我用CURLOPT_CONNECTTIMEOUT尝试过,但这似乎没有解决问题。

function url_get_contents($url)
{
    if (!function_exists('curl_init'))
    {
        die('Exit: CURL is not installed or enabled!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

简短回答:

curl_setopt($ch, CURLOPT_TIMEOUT, 2);


引用自 PHP cURL 文档:

CURLOPT_CONNECTTIMEOUT:尝试等待的秒数 连接。使用 0 无限期等待。

CURLOPT_TIMEOUT 允许 cURL 函数的最大秒数 来执行。

CURLOPT_CONNECTTIMEOUT - 尝试等待时的秒数 连接。使用 0 无限期等待。

CURLOPT_TIMEOUT - 最大值 允许 cURL 函数执行的秒数。

使用CURLOPT_TIMEOUT

CURLOPT_CONNECTTIMEOUT限制cURL等待建立连接的时间。服务器仍然必须查找内容并发送,这通常需要更长的时间。

cURL 还有另一个选项,CURLOPT_TIMEOUT这是对curl_exec()函数的限制。将其视为函数返回某些内容所花费时间的限制。这听起来像您正在寻找的内容:

curl_setopt($ch, CURLOPT_TIMEOUT, 2);

我认为你需要使用curl_getinfo()函数

请参阅此 http://php.net/manual/en/function.curl-getinfo.php

代码将是这样的

$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);