Commit c0219133 authored by mengweifu's avatar mengweifu

update: HttpUtil

parent 471681c7
......@@ -57,14 +57,13 @@ class HttpUtil
$ch = self::CH($url, $timeout, $headers, $post, $proxy, $method, $curl_opts);
$result = false; //返回结果
$result_code = self::CODE_FAIL; //错误代码
$result_http_code = 0; // http code
$error_msg = ''; // ch error
$response = defaultResponse();
if (is_resource($ch) === true)
{
//返回结果
$result = false;
while (($result === false) && ($retries-- > 0))
{
$result = curl_exec($ch);
......@@ -106,23 +105,13 @@ class HttpUtil
// 日志
self::addLog($method, $url, $post, $result);
if (curl_errno($ch) !== 0)
{
$error_msg = curl_error($ch);
}
$result_code = curl_errno($ch) === 0 ? self::CODE_SUCCESS : self::CODE_FAIL;
$result_http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 返回结果
$response = self::createResponse($result, $ch);
curl_close($ch);
}
return [
'code' => $result_code,
'response' => empty(json_decode($result, true)) ? $result : json_decode($result, true),
'http_code' => $result_http_code,
'msg' => $error_msg,
];
return $response;
}
/**
......@@ -197,16 +186,17 @@ class HttpUtil
{
$methods = [];
foreach ($urls as $k => $url) {
$methods[$k] = 'GET';
$methods[$k] = 'POST';
}
return self::MULTI_CURL($urls, $methods, $posts, $timeouts , $headers, $proxies, $curl_opts);
}
static function MULTI_GET($urls,$timeouts ,$headers = [], $proxies = [], $curl_opts = [])
static function MULTI_GET($urls =[],$params = [], $timeouts = [],$headers = [], $proxies = [], $curl_opts = [])
{
$methods = $posts = [];
foreach ($urls as $k => $url) {
$methods[$k] = 'POST';
$urls[$k] = $url ."?". http_build_query($params[$k]);
$methods[$k] = 'GET';
$posts[$k] = false;
}
......@@ -244,10 +234,23 @@ class HttpUtil
curl_multi_exec($mh, $active);
} while ($active);
$response = [];
//step four 获取结果,移除并close handle
foreach ($urls as $i => $url)
{
$res[$url]=curl_multi_getcontent($conn[$i]);
$response_content = curl_multi_getcontent($conn[$i]);
$response[$i] = self::createResponse($response_content, $conn[$i]);
// 监控
self::addMon(
$url,
curl_errno($conn[$i]) === 0 ? curl_getinfo($conn[$i], CURLINFO_HTTP_CODE) : -999,
round(curl_getinfo($conn[$i], CURLINFO_TOTAL_TIME),4) * 1000
);
// 日志
self::addLog($methods[$i], $url, $posts[$i], $response_content);
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
}
......@@ -255,7 +258,7 @@ class HttpUtil
curl_multi_close($mh);
//step five 结果返回
return $res;
return $response;
}
/*
......@@ -288,6 +291,7 @@ class HttpUtil
}
}
if (!empty($log)) {
//
$params = self::change($params);
FileLog::info($method, json_encode([
'url' => $urls,
......@@ -315,4 +319,33 @@ class HttpUtil
}
return $arr;
}
/**
* @param string $response_content 请求返回结果
* @param resource $ch_handle cURL resource
* @return array
*/
private static function createResponse(string $response_content, resource $ch_handle): array
{
return [
'code' => curl_errno($ch_handle) === 0 ? self::CODE_SUCCESS : self::CODE_FAIL,
'response' => empty(json_decode($response_content, true)) ? $response_content : json_decode($response_content, true),
'http_code' => curl_getinfo($ch_handle, CURLINFO_HTTP_CODE),
'msg' => curl_error($ch_handle),
];
}
/**
* 默认返回
* @return array
*/
private static function defaultResponse(): array
{
return [
'code' => self::CODE_FAIL,
'response' => '',
'http_code' => 0,
'msg' => '',
];
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment