setName('queue:monitor') ->setDescription('监控队列状态') ->addOption('interval', 'i', Option::VALUE_OPTIONAL, '监控间隔(秒)', 10); } protected function execute(Input $input, Output $output) { $interval = $input->getOption('interval'); $output->writeln("开始监控送礼队列状态,间隔: {$interval}秒"); $output->writeln("按 Ctrl+C 停止监控"); $history = []; $maxHistory = 60; while (true) { try { $stats = GiftQueue::stats(); $timestamp = date('H:i:s'); $output->writeln("[{$timestamp}] 队列大小: {$stats['queue_size']}, 失败队列: {$stats['failed_size']}, 状态: {$stats['status']}"); // 记录历史数据 $history[] = [ 'time' => $timestamp, 'size' => $stats['queue_size'], 'status' => $stats['status'] ]; if (count($history) > $maxHistory) { array_shift($history); } // 检查队列是否积压 if ($stats['queue_size'] > 1000) { $output->writeln("警告:队列积压严重!"); } elseif ($stats['queue_size'] > 100) { $output->writeln("注意:队列正在积压"); } sleep($interval); } catch (\Exception $e) { $output->writeln("监控异常: " . $e->getMessage() . ""); sleep($interval); } } } }