队列信息

This commit is contained in:
chengxl
2025-06-04 13:27:39 +08:00
parent 1b424ebc51
commit b11428882e

View File

@@ -0,0 +1,99 @@
<?php
namespace app\api\controller;
use app\api\controller\Base;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Config;
use think\Request;
class Queueinfo extends Base
{
public function __construct(\think\Request $request = null) {
$this->proxy = '';
parent::__construct($request);
}
// Redis队列展示
public function show() {
$aParam = $this->request->post();
$config = \think\Config::get('queue');
$config['queue'] = empty($aParam['queue_name']) ? 'ArticleAiCreateContent' : $aParam['queue_name'];
$redis = new \Redis();
$redis->connect($config['host'], $config['port']);
if (!empty($config['password'])) {
$redis->auth($config['password']);
}
$redis->select($config['select']);
// 获取不同队列类型的任务数
$aQueue = ['ArticleAiCreateContent','WechatMaterial','WechatDraft','WechatQueryStatus'];
foreach ($aQueue as $key => $value) {
$types[$value] = [
'pending' => 'queues:'.$value,
'delayed' => 'queues:'.$value.':delayed',
'failed' => 'queues:'.$value.':failed',
'reserved' => 'queues:'.$value.':reserved',
];
}
$counts = [];
foreach ($types as $k => $value) {
foreach ($value as $type => $key) {
if($type == 'pending'){
$counts[$k][$key] = $redis->lrange($key,0,-1);
}else{
$counts[$k][$key] = $redis->zRange($key,0,-1);
}
}
}
echo '<pre>';var_dump($counts);
}
// Redis值删除
public function remove() {
$aParam = $this->request->post();
$config = \think\Config::get('queue');
$sQueueName = empty($aParam['queue_name']) ? 'ArticleAiCreateContent' : $aParam['queue_name'];
$redis = new \Redis();
$redis->connect($config['host'], $config['port']);
if (!empty($config['password'])) {
$redis->auth($config['password']);
}
$redis->select($config['select']);
$sQueueType = empty($aParam['queue_type']) ? '' : $aParam['queue_type'];
$iNum = empty($aParam['queue_num']) ? 0 : $aParam['queue_num'];
if(empty($iNum) || empty($sQueueType)){
echo '非法操作';
exit;
}
// 获取不同队列类型的任务数
$sKey = 'queues:'.$sQueueName;
if(!empty($sQueueType)){
$sKey .= ':'.$sQueueType;
}
$counts = [];
if($sQueueType == 'pending'){
$sQueueInfo = $redis->LINDEX($sKey,$iNum);
}else{
$sQueueInfo = $redis->ZRANGE($sKey,0,-1);
}
if(!empty($sQueueInfo)){
}
echo '<pre>';var_dump($sQueueInfo,$sKey,$iNum);exit;
}
}