207 lines
6.4 KiB
PHP
207 lines
6.4 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'] : [$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);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
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);
|
|
}
|
|
|
|
public function removeKey1(){
|
|
|
|
$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);
|
|
$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);
|
|
}
|
|
}
|