|
...
|
...
|
@@ -9,7 +9,9 @@ |
|
|
|
|
|
|
|
namespace App\Console\Commands\RequestUrlLog;
|
|
|
|
|
|
|
|
use App\Helper\FormGlobalsoApi;
|
|
|
|
use App\Models\Com\RequestUrl;
|
|
|
|
use App\Models\Domain\DomainInfo;
|
|
|
|
use App\Models\Project\Project;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
|
|
...
|
...
|
@@ -40,22 +42,87 @@ class RequestUrlLog extends Command |
|
|
|
//获取需要请求的接口
|
|
|
|
$requestUrlModel = new RequestUrl();
|
|
|
|
$urlList = $requestUrlModel->list(['status'=>0]);
|
|
|
|
//随机获取一个项目,需要验证的其他方法
|
|
|
|
$projectModel = new Project();
|
|
|
|
$projectInfo = $projectModel->formatQuery(['type'=>2,'delete_status'=>0])->inRandomOrder()->first();
|
|
|
|
//获取对应项目的域名
|
|
|
|
$domainModel = new DomainInfo();
|
|
|
|
$domainInfo = $domainModel->read(['project_id'=>$projectInfo['id']]);
|
|
|
|
foreach ($urlList as $v){
|
|
|
|
//需要单独验证的方法
|
|
|
|
if($v['url'] == 'getMonthInquiry'){
|
|
|
|
$result = $this->getMonthInquiry($domainInfo['domain'],date('Y-m'), 0);
|
|
|
|
$requestUrlModel->edit(['text'=>json_encode($result,true),'time'=>$result['$requestTime'],'http_code'=>$result['http_code']],['id'=>$v['id']]);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
//循环请求设置
|
|
|
|
if($v['method'] == 'get'){
|
|
|
|
|
|
|
|
}else{
|
|
|
|
$url = $v['url'];
|
|
|
|
$result = $this->postRequest($url,$v['param']);
|
|
|
|
echo '执行的url:' . $url . PHP_EOL . '返回的结果:'.json_encode($result,true) . date('Y-m-d H:i:s').PHP_EOL;
|
|
|
|
if($v['method'] == 'post'){
|
|
|
|
$result = $this->postRequest($v['url'],$v['param']);
|
|
|
|
echo '执行的url:' . $v['url'] . PHP_EOL . '返回的结果:'.json_encode($result,true) . date('Y-m-d H:i:s').PHP_EOL;
|
|
|
|
//更新请求结果
|
|
|
|
$requestUrlModel->edit(['text'=>json_encode($result,true)],['id'=>$v['id']]);
|
|
|
|
$requestUrlModel->edit(['text'=>json_encode($result,true),'time'=>$result['$requestTime'],'http_code'=>$result['http_code']],['id'=>$v['id']]);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :按月统计xunpan
|
|
|
|
* @name :getMonthInquiry
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2025/3/10 14:15
|
|
|
|
*/
|
|
|
|
public function getMonthInquiry($url,$month,$is_upgrade = 0){
|
|
|
|
$url = 'https://'.$url.'/';
|
|
|
|
$token = md5($url.date("Y-m-d"));
|
|
|
|
$data = [
|
|
|
|
'domain' => $url,
|
|
|
|
'token' => $token,
|
|
|
|
'source'=> $is_upgrade ? '1,2,3,4,5' : '1,3,5',
|
|
|
|
'model' => 'month',
|
|
|
|
'sta_date'=>$month,
|
|
|
|
];
|
|
|
|
$queryString = http_build_query($data);
|
|
|
|
$url = 'https://www.globalso.site/api/external-interface/country_con/15243d63ed5a5738?'.$queryString;
|
|
|
|
$res = $this->getRequest($url);
|
|
|
|
return $res;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :http_get请求
|
|
|
|
* @name :getRequest
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2025/3/10 14:35
|
|
|
|
*/
|
|
|
|
public function getRequest($url){
|
|
|
|
$header[] = "content-type: application/json";
|
|
|
|
$ch1 = curl_init();
|
|
|
|
$timeout = 0;
|
|
|
|
curl_setopt($ch1, CURLOPT_URL, $url);
|
|
|
|
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
curl_setopt($ch1, CURLOPT_ENCODING, '');
|
|
|
|
curl_setopt($ch1, CURLOPT_MAXREDIRS, 10);
|
|
|
|
curl_setopt($ch1, CURLOPT_TIMEOUT, 120);
|
|
|
|
curl_setopt($ch1, CURLOPT_HTTPHEADER, $header);
|
|
|
|
curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, $timeout);
|
|
|
|
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
|
|
|
|
curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, 'GET');
|
|
|
|
curl_setopt($ch1, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
|
|
|
$access_txt = curl_exec($ch1);
|
|
|
|
$total_time = curl_getinfo($ch1, CURLINFO_TOTAL_TIME); // 获取请求总时间
|
|
|
|
$httpCode = curl_getinfo($ch1, CURLINFO_HTTP_CODE);
|
|
|
|
if (curl_errno($ch1)) {
|
|
|
|
curl_error($ch1);
|
|
|
|
}
|
|
|
|
curl_close($ch1);
|
|
|
|
$response = json_decode($access_txt, true);
|
|
|
|
return ['response' => $response, 'http_code' => $httpCode, 'request_time_ms' => $total_time];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :请求设置
|
|
|
|
* @name :postRequest
|
|
|
|
* @author :lyh
|
|
...
|
...
|
@@ -64,12 +131,10 @@ class RequestUrlLog extends Command |
|
|
|
*/
|
|
|
|
public function postRequest($url, $postData)
|
|
|
|
{
|
|
|
|
if (empty($header)) {
|
|
|
|
$header = array(
|
|
|
|
"Accept: application/json",
|
|
|
|
"Content-Type:application/json;charset=utf-8",
|
|
|
|
);
|
|
|
|
}
|
|
|
|
$ch = curl_init();
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
|
...
|
...
|
@@ -81,18 +146,15 @@ class RequestUrlLog extends Command |
|
|
|
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
|
|
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
// 记录请求开始时间
|
|
|
|
$startTime = microtime(true);
|
|
|
|
$res = curl_exec($ch);
|
|
|
|
// 记录请求结束时间
|
|
|
|
$endTime = microtime(true);
|
|
|
|
$total_time = curl_getinfo($ch, CURLINFO_TOTAL_TIME); // 获取请求总时间
|
|
|
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
|
|
if (curl_errno($ch)) {
|
|
|
|
curl_error($ch);
|
|
|
|
}
|
|
|
|
$requestTime = round(($endTime - $startTime) * 1000, 2); // 转换为毫秒
|
|
|
|
curl_close($ch);
|
|
|
|
return ['response' => $res, 'http_code' => $httpCode, 'request_time_ms' => $requestTime];
|
|
|
|
$response = json_decode($res, true);
|
|
|
|
return ['response' => $response, 'http_code' => $httpCode, 'request_time_ms' => $total_time];
|
|
|
|
}
|
|
|
|
|
|
|
|
} |
...
|
...
|
|