Files
tougao/application/api/controller/Queueinfo.php
2025-07-28 15:41:23 +08:00

230 lines
7.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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;
use app\common\QueueJob;
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 = empty($aParam['queue_name']) ? ['ArticleAiCreateContent','RecommendReviewer','RelatedArticle','ReviewerScore','RevisionReviewer','SendRelatedArticleEmail','SendReviewEmail','WechatDraft','WechatDraftPublish','WechatMaterial','WechatQueryStatus','createFieldForQueue','RecommendArticleField'] : [$aParam['queue_name']];
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);
}
}
}
// 关闭 Redis 连接(关键步骤)
$redis->close();
echo '<pre>';var_dump($counts);
}
public function removeKey() {
$aParam = $this->request->post();
$config = \think\Config::get('queue');
$config['queue'] = empty($aParam['queue_name']) ? '' : $aParam['queue_name'];
if(empty($config['queue'])){
exit('非法操作');
}
$redis = new \Redis();
$redis->connect($config['host'], $config['port']);
if (!empty($config['password'])) {
$redis->auth($config['password']);
}
$redis->select($config['select']);
// 获取不同队列类型的任务数
$aQueue = empty($aParam['queue_name']) ? ['ArticleAiCreateContent','WechatMaterial','WechatDraft','WechatQueryStatus'] : [$aParam['queue_name']];
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);
}
if ($redis->exists($key)) {
$redis->del($key);
var_dump("已删除队列键:{$key}");exit();
}
}
}
// 关闭 Redis 连接(关键步骤)
$redis->close();
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;
// 关闭 Redis 连接(关键步骤)
$redis->close();
}
public function getKey(){
$aParam = $this->request->post();
if(empty($aParam['key_name'])){
exit('非法操作');
}
$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']);
$sKey = $redis->hGetAll($aParam['key_name']);
echo '我是HgetAll';
var_dump($sKey);
$sKey = $redis->get($aParam['key_name']);
var_dump($sKey);
// 关闭 Redis 连接(关键步骤)
$redis->close();
}
public function removeKey1(){
// 获取请求参数
$aParam = $this->request->post();
if (empty($aParam['key_name'])) {
exit('非法操作');
}
// 获取队列配置Redis 配置)
$config = \think\Config::get('queue');
// 队列名称默认值处理
$sQueueName = empty($aParam['queue_name']) ? 'ArticleAiCreateContent' : $aParam['queue_name'];
// 初始化 Redis 连接
$redis = new \Redis();
// 连接 Redis 服务器
$redis->connect($config['host'], $config['port']);
// 若有密码则认证
if (!empty($config['password'])) {
$redis->auth($config['password']);
}
// 选择数据库(默认 0
$redis->select($config['select']);
// 操作示例:获取哈希表数据
echo '我是HgetAll';
$sKey = $redis->hGetAll($aParam['key_name']);
var_dump($sKey);
// 删除哈希表
$result = $redis->del($aParam['key_name']);
var_dump($result);
// 尝试获取字符串类型的键(验证是否删除)
echo '我是get';
$sKey = $redis->get($aParam['key_name']);
var_dump($sKey);
// 再次删除(确保删除)
$result = $redis->del($aParam['key_name']);
var_dump($result);
// 关闭 Redis 连接(关键步骤)
$redis->close();
}
}