2013-09-21 40 views
3

我有这个功能,现在有时当一个网站停机或长时间加载时,会减慢我网站的加载时间。如果服务器在2秒后没有响应,如何使cURL返回false?

如果服务器在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; 
} 
+0

每次浏览您的网站时,您是否需要获取?把它放在一个cron中可能会更好,并保存结果,比如说每小时一次。然后您可以有一个很长的超时时间,并且您的站点不需要等待缓慢的HTTP操作。 – halfer

回答

1

CURLOPT_CONNECTTIMEOUT - 秒数等待而试图 连接。使用0等待无限期。

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

使用CURLOPT_TIMEOUT

+0

这似乎有伎俩。非常感谢。 –

2

简短的回答:

curl_setopt($ch, CURLOPT_TIMEOUT, 2); 


PHP cURL documentation报价:

CURLOPT_CONNECTTIMEOUT:等待的秒数,同时试图连接 。使用0等待无限期。

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

+0

在您的简短回答中,时间应该是秒,而不是毫秒。 –

+0

@KidDiamond我的错误。我在看'CURLOPT_TIMEOUT_MS'。 – Mooseman

0

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

cURL有另一个选项,CURLOPT_TIMEOUT这是对curl_exec()函数的限制。把它看作是函数返回某些东西的时间量的限制。这听起来像你要找的东西:

curl_setopt($ch, CURLOPT_TIMEOUT, 2); 
相关问题