消息队列类2

<?php

namespace redisqueue;

// 使用原生Redis来设置消息队列
class RedisQueue2
{
// 生产者
public function producer()
{
// 创建Redis客户端实例
$redis = new \Redis();
// 连接到Redis服务器
$redis->connect('xxx.xxx.xxx.xxx', 6379);
// 进行身份验证,替换为您的Redis密码
$password = '密码';
$redis->auth($password);
// 定义消息队列的名称
$queue = 'message_queue';
// 初始化消息计数
$sum = 0;
// 循环生产11条消息(从0到10)
for ($i = 0; $i <= 10; $i++) {
// 构造消息内容
$message = "生产面包:{$i}号";
// 将消息推送到队列的左侧
$redis->lPush($queue, $message);
// 递增消息计数
$sum++;
}
// 返回生产的消息总数
return $sum;
}

// 队列内容
public function viewQueue($queue)
{
// 创建Redis客户端实例
$redis = new \Redis();
// 连接到Redis服务器
$redis->connect('xxx.xxx.xxx.xxx', 6379);
// 进行身份验证,替换为您的Redis密码
$password = '密码';
$redis->auth($password);

// 使用 lRange 命令获取队列中的所有元素
// 0 表示开始索引,-1 表示结束索引(即获取所有元素)
$messages = $redis->lRange($queue, 0, -1);

// 返回队列中的元素数组
return $messages;
}

// 消费者
public function consumer()
{
// 创建Redis客户端实例
$redis = new \Redis();
// 连接到Redis服务器
$redis->connect('xxx.xxx.xxx.xxx', 6379);
// 进行身份验证,替换为您的Redis密码
$password = '密码';
$redis->auth($password);
// 定义消息队列的名称
$queue = 'message_queue';
// 注意:脚本将在这里阻塞等待消息,阻塞地等待一个消息变得可用
while (true) {
// 从队列的右侧阻塞式地弹出一个消息(如果队列为空则等待)
$message = $redis->blPop($queue, 0);
if ($message) {
// 解包消息数组(队列名称和消息内容)
list($queue, $msg) = $message;
// 输出接收到的消息
echo "Received message: {$msg}\n";
// 模拟消息处理,即处理$msg信息内容(例如,等待2秒)
sleep(2);
}
}
}
}


// 使用条件:1.阿里云安全组规则开放6379端口、2.宝塔->安全->开放6379端口
// 消费原理:先进先出,后进后出
// 使用步骤:
// 1.生产者
// $queue = new RedisQueue();
// $produced = $queue->producer();
// echo "Produced {$produced} messages.\n";

// 2.消费者
//$queue = new RedisQueue();
//$queue->consumer();

// 3.队列内容
//$queue = new RedisQueue();
//$queueName = 'message_queue';
//$messages = $queue->viewQueue($queueName);
//foreach ($messages as $message) {
// echo "{$message}<br/>";
//}


相关推荐

  • 生成图片

    from PIL import Image, ImageColor, ImageDraw, ImageFont, ImageFilterdef create_image_with_text(size, color, text, font_path, font_size, text_color, shadow_color, output_path): """ Create a new image of specified size and color with centered text that has a border and shadow. :param size: A tuple con

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3