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);
}
}
}
}