diff --git a/app/command/ApiLogCommand.php b/app/command/ApiLogCommand.php index 7a88d676..62d2b72c 100644 --- a/app/command/ApiLogCommand.php +++ b/app/command/ApiLogCommand.php @@ -10,22 +10,15 @@ use think\console\Input; use think\console\Output; use think\facade\Cache; use think\facade\Log; +use think\facade\Db; class ApiLogCommand extends Command { protected function configure() { - // 指令配置 - $this->setName('api_log') - ->setDescription('the api_log command'); + $this->setName('api_log')->setDescription('the api_log command'); } - /** - * Execute the console command. - * - * @param Input $input - * @param Output $output - * @return void - */ + protected function execute(Input $input, Output $output) { while (true) { @@ -38,15 +31,25 @@ class ApiLogCommand extends Command if (!is_array($logData) || empty($logData)) { continue; } - if ($logData) { - $logData['params'] = json_encode($logData['params'] ?? [], JSON_UNESCAPED_UNICODE); - $logData['response'] = json_encode($logData['response'] ?? [], JSON_UNESCAPED_UNICODE); + $logData['params'] = json_encode($logData['params'] ?? [], JSON_UNESCAPED_UNICODE); + $logData['response'] = json_encode($logData['response'] ?? [], JSON_UNESCAPED_UNICODE); + + try { ApiLogModel::create($logData); + } catch (\Throwable $e) { + // 如果是 MySQL 2006 错误,则重连后再执行 + if (strpos($e->getMessage(), '2006 MySQL server has gone away') !== false) { + Log::warning('MySQL connection lost, reconnecting...'); + Db::disconnect(); // 清理旧连接 + Db::reconnect(); // 重新连接 + ApiLogModel::create($logData); // 重试一次 + } else { + throw $e; + } } } else { - // 如果没有数据,休眠一段时间再继续 - sleep(10); + sleep(10); // 没数据时休眠 } } catch (\Throwable $e) { Log::error('ApiLogCommand error: ' . $e->getMessage()); diff --git a/app/home/middleware/ApiLogMiddleware.php b/app/home/middleware/ApiLogMiddleware.php index e0a51c82..12c9c021 100644 --- a/app/home/middleware/ApiLogMiddleware.php +++ b/app/home/middleware/ApiLogMiddleware.php @@ -29,6 +29,7 @@ class ApiLogMiddleware 'user_drawal', 'pre_stock/order', 'fund/order', + 'generate_token' ]; @@ -71,6 +72,5 @@ class ApiLogMiddleware \think\facade\Cache::store('redis')->lpush('api_log', json_encode($logData)); } return $response; - } }