123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- namespace App\Console\Commands;
- use App\Models\NodeDailyDataFlow;
- use App\Models\NodeHeartBeat;
- use App\Models\NodeHourlyDataFlow;
- use App\Models\NodeOnlineLog;
- use App\Models\NodeOnlineUserIp;
- use App\Models\UserBanedLog;
- use App\Models\UserDailyDataFlow;
- use App\Models\UserDataFlowLog;
- use App\Models\UserHourlyDataFlow;
- use App\Models\UserLoginLog;
- use App\Models\UserSubscribeLog;
- use Exception;
- use Illuminate\Console\Command;
- use Log;
- class AutoClearLog extends Command
- {
- protected $signature = 'autoClearLog';
- protected $description = '自动清除日志';
- public function handle(): void
- {
- $jobStartTime = microtime(true);
- // 清除日志
- if (sysConfig('is_clear_log')) {
- $this->clearLog();
- }
- $jobEndTime = microtime(true);
- $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
- Log::info(
- '---【' . $this->description . '】完成---,耗时' . $jobUsedTime . '秒'
- );
- }
- // 清除日志
- private function clearLog(): void
- {
- try {
- // 清除节点负载信息日志
- NodeHeartBeat::where('log_time', '<=', strtotime("-30 minutes"))
- ->delete();
- // 清除节点在线用户数日志
- NodeOnlineLog::where('log_time', '<=', strtotime("-1 hour"))
- ->delete();
- // 清除用户流量日志
- UserDataFlowLog::where('log_time', '<=', strtotime("-3 days"))
- ->delete();
- // 清除用户每时各流量数据日志
- UserHourlyDataFlow::where(
- 'created_at',
- '<=',
- date('Y-m-d H:i:s', strtotime('-3 days'))
- )->delete();
- // 清除用户各节点 / 节点总计的每天流量数据日志
- UserDailyDataFlow::where('node_id', '<>', 0)
- ->where(
- 'created_at',
- '<=',
- date('Y-m-d H:i:s', strtotime('-1 month'))
- )
- ->orWhere(
- 'created_at',
- '<=',
- date(
- 'Y-m-d H:i:s',
- strtotime('-3 month')
- )
- )
- ->delete();
- // 清除节点每小时流量数据日志
- NodeHourlyDataFlow::where(
- 'created_at',
- '<=',
- date('Y-m-d H:i:s', strtotime('-3 days'))
- )->delete();
- // 清除节点每天流量数据日志
- NodeDailyDataFlow::where(
- 'created_at',
- '<=',
- date('Y-m-d H:i:s', strtotime('-2 month'))
- )->delete();
- // 清除用户封禁日志
- UserBanedLog::where(
- 'created_at',
- '<=',
- date('Y-m-d H:i:s', strtotime("-3 month"))
- )->delete();
- // 清除用户连接IP
- NodeOnlineUserIp::where('created_at', '<=', strtotime("-1 month"))
- ->delete();
- // 清除用户登陆日志
- UserLoginLog::where(
- 'created_at',
- '<=',
- date('Y-m-d H:i:s', strtotime("-3 month"))
- )->delete();
- // 清除用户订阅记录
- UserSubscribeLog::where(
- 'request_time',
- '<=',
- date('Y-m-d H:i:s', strtotime("-1 month"))
- )->delete();
- } catch (Exception $e) {
- Log::error('【清理日志】错误: ' . $e->getMessage());
- }
- }
- }
|