队列信息
This commit is contained in:
99
application/api/controller/Queueinfo.php
Normal file
99
application/api/controller/Queueinfo.php
Normal 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;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user