作者 赵彬吉
... ... @@ -34,9 +34,13 @@ class CountAllProject extends Command
public function handle(){
$countAllModel = new AllProject;
AllProject::truncate();
// $noSixData = [];
// $noSixData = $this->NoSixProject();
$noSixData = $this->NoSixProject();
$countAllModel->insert($noSixData);
$sixData = $this->sixProject();
$countAllModel->insert($sixData);
$data = array_merge($noSixData ?? [],$sixData ?? []);
echo 'success:' .count($data) . PHP_EOL . date('Y-m-d H:i:s');
return true;
... ... @@ -53,18 +57,34 @@ class CountAllProject extends Command
$res_data = [];
$i = 1;
while (true) {
$url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=' . $i . '&pagesize=100';
$result = curl_get($url);
$url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=' . $i . '&pagesize=50';
$result = $this->httpGetProxy($url);
// 检查结果是否成功,并且结构符合预期
if (isset($result['data']['data']) && is_array($result['data']['data'])) {
$data = $result['data']['data'];
// 如果当前页没有数据,跳出循环
if (empty($data)) {
if ($i == 2) {
break;
}
foreach ($data as $k => $v){
if(empty($v['online_date'])){
$v['online_date'] = null;
}
if($v['is_admin5'] == 5){
$v['version'] = 2;
}else{
$v['version'] = 3;
}
$v['is_upgrade'] = 0;
$v['status'] = 0;
$v['created_at'] = $v['updated_at'] = date('Y-m-d H:i:s');
$data[$k] = $v;
}
echo '执行页数:' . $i . PHP_EOL . date('Y-m-d H:i:s') . PHP_EOL;
$res_data = array_merge($res_data, $data);
$i++;
// 每次请求后增加 1 秒延迟,防止请求过于频繁
sleep(1);
} else {
// 如果数据结构不符合预期,输出错误信息并跳出循环
echo '数据结构不符合预期或请求失败,停止执行。' . PHP_EOL . json_encode($result);
... ... @@ -74,6 +94,26 @@ class CountAllProject extends Command
return $res_data;
}
public function httpGetProxy($url){
$ch1 = curl_init();
$timeout = 0;
curl_setopt($ch1, CURLOPT_URL, $url);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_PROXY, 'http://69.90.188.183:51395');
curl_setopt($ch1, CURLOPT_ENCODING, '');
curl_setopt($ch1, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch1, CURLOPT_HTTPHEADER, array());
curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch1, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$content = curl_exec($ch1);
curl_close($ch1);
return json_decode($content, true);
}
public function sixProject(){
$projectModel = new Project();
$manageModel = new ManageHr();
... ... @@ -100,9 +140,9 @@ class CountAllProject extends Command
'online_date'=>$v['uptime'],
'keywords_num'=>$v['key'],
'service_num'=>$v['day'],
'production_num'=>intval(abs(strtotime((empty($v['uptime']) ? date('Y-m-d H:i:s') : $v['uptime'])) - $v['created_at']) / 86400),
'production_num'=>intval(abs((empty($v['uptime']) ? time() : strtotime($v['uptime'])) - strtotime($v['created_at'])) / 86400),
'plan'=>Project::planMap()[$v['plan']],
'status'=>$v['status'],
'status'=>0,
'test_domain'=>$v['test_domain'],
'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
... ... @@ -113,6 +153,8 @@ class CountAllProject extends Command
'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
'qa'=>$manageModel->getName($v['quality_mid'] ??''),
'created_at'=>date('Y-m-d H:i:s'),
'updated_at'=>date('Y-m-d H:i:s'),
];
}
$i++;
... ... @@ -131,6 +173,7 @@ class CountAllProject extends Command
'gl_project.channel AS channel',
'gl_project.company AS company',
'gl_project.type AS type',
'gl_project.status AS status',
'gl_project.extend_type AS extend_type',
'gl_project.uptime AS uptime',
'gl_project.is_upgrade AS is_upgrade',
... ...
... ... @@ -39,7 +39,7 @@ class TestController extends BaseController
$res_data = [];
// $i = 1;
// while (true){
$url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=200&pagesize=100';
$url = 'https://quanqiusou.cn/extend_api/api/projects.php?page=1&pagesize=1';
$result = http_get($url);
$data = $result['data'];
// if(empty($data)){
... ...
... ... @@ -13,5 +13,5 @@ use App\Models\Base;
class CountAllProject extends Base
{
protected $table = 'gl_count_all_project';
protected $table = 'gl_all_project';
}
... ...