230 lines
7.2 KiB
PHP
230 lines
7.2 KiB
PHP
<?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();
|
||
}
|
||
}
|