curl - 超时和错误判断

  • 作者:KK

  • 发表日期:2017.8.22


比如我们向一个不存在的地址发送请求,curl_exec函数会返回空值,这时候我们可以借助curl_errno函数获取错误代码,以及curl_error函数获取错误消息

$url = 'http://www.xxxxxxxx.com/yy/zz?aa=11&bb=22';
$timeout = 30;

$curlHandler = curl_init();
curl_setopt($curlHandler, CURLOPT_URL, $url);
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //设置整个网络请求最长执行时间为30秒
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout - 2); //设置连接目标服务器28秒无响应时判断为超时
$result = curl_exec($curlHandler);

if($errorCode = curl_errno($curlHandler)){
	throw new ErrorException(curl_error($ch), $errorCode);
}

curl_close($curlHandler);

echo $result;

上面用curl_errno来作为判断依据,其实更多人是使用curl_error的结果作为判断依据,我并不主张那样

简单地说取一个数字比取一个字符串更省内存嘛,能省就省,如果报错信息涉及许多字符内容,而且并发又大的时候,损耗就慢慢积小成多了,要做好这个代码质量其实很容易,用errno这个返回的数字作为判断依据就好了