分表数据

This commit is contained in:
2025-12-30 15:25:58 +08:00
parent f8e7ff1d52
commit ed923cd0bf
10 changed files with 885 additions and 4 deletions

View File

@@ -0,0 +1,64 @@
<?php
// application/common/command/QueueMonitor.php
namespace app\common\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\console\input\Option;
use app\common\library\GiftQueue;
class QueueMonitor extends Command
{
protected function configure()
{
$this->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("<error>警告:队列积压严重!</error>");
} elseif ($stats['queue_size'] > 100) {
$output->writeln("<comment>注意:队列正在积压</comment>");
}
sleep($interval);
} catch (\Exception $e) {
$output->writeln("<error>监控异常: " . $e->getMessage() . "</error>");
sleep($interval);
}
}
}
}