/**
* CURL请求
*
* @param $url 请求的URL
* @param array $postData POST请求数据
* @param bool $isSsl 是否是HTTPS协议
* @param int $timeOut 请求超时时间,默认3S
* @param bool $post 是否post请求
* @param bool $setCookie 是否携带cookie
* @return bool|string 返回false时,请求失败
*/
public static function curl($url, $postData = [], $isSsl = false, $timeOut = 3, $post = true ,$setCookie = false,$userAgent = '')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeOut);
curl_setopt($ch,CURLOPT_COOKIE,http_build_query($_COOKIE,null,';'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
if (!empty($postData)) {
if ($post) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
} else {
$url .= '?' . http_build_query($postData);
}
}
curl_setopt($ch, CURLOPT_URL, $url);
if ($isSsl) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
if($setCookie)
{
curl_setopt($ch,CURLOPT_COOKIE,http_build_query($_COOKIE,null,';'));
}
if($userAgent)
{
curl_setopt($ch,CURLOPT_USERAGENT,$userAgent);
}
$time = microtime(true);
$result = curl_exec($ch);
$time = microtime(true) - $time;
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$log['message'] = [
'url' => $url,
'method' => empty($postData) ? 'GET' : 'POST',
'post_data' => $postData,
'consume time' => $time,
];
if (curl_errno($ch)) {
$result = false;
$log['message']['error'] = curl_error($ch);
} elseif ($httpCode != 200) {
$result = false;
$log['message']['http_code'] = $httpCode;
} else {
$log['message']['http_code'] = $httpCode;
$log['message']['response'] = $result;
}
curl_close($ch);
\Yii::info($log, __METHOD__);
return $result;
}