PHP使用Redis实战实录系列
- PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案
- PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案
- PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展
- PHP使用Redis实战实录4:单例模式和面向过程操作redis的语法
消息队列实现方案(一)
1.获取数据存入Redis
$CONF = require_once "conf/config.php";
$redis = new Redis();
$redis->connect($CONF['redis_host'], $CONF['redis_port']);
$redis->auth($CONF['redis_auth']);
$redis->select(0);//选择数据库
$goodsId = 30;
$key = "goods_id";
// 循环添加商品
for ($i = 1; $i <= $goodsId; $i++) {
$redis->rPush($key, $i);
}
2.读取Redis数据进行业务处理
//循环遍历输出;
$j = 1;
while ($j <= $goodsId) {
$goods_id = $redis->lPop($key);
if ($goods_id) {
outQueue($goods_id);
}
$j++;
usleep(1000000);//0.002秒
}
//写入日志
function outQueue($goods_id)
{
return file_put_contents('logs.txt', $goods_id . " " . date("Y-m-d H:i:s") . PHP_EOL, FILE_APPEND);
}
//查看数据;
$list = $redis->lrange($key, 0, -1);
var_dump($list);
补充知识
1.file_put_contents()函数
file_put_contents()
是一个 PHP 函数,用于将一个字符串写入文件。其语法是:
file_put_contents(string $filename, mixed $data, int $flags = 0, resource $context = null): int|false
参数说明:
-
$filename
:要写入数据的文件名。 -
$data
:要写入文件的数据,可以是字符串、数组或对象。如果是数组或对象,则会自动转换为 JSON 格式写入。 -
$flags
(可选):用于指定文件写入的选项。常用的标志可以是FILE_APPEND
(追加写入)。 -
$context
(可选):通常不需要使用,可以传递一个上下文资源。
返回值:
- 如果成功写入文件,函数将返回写入的字节数。
- 如果发生错误,函数将返回
false
。
示例使用:
$data = "Hello, World!";
$file = "example.txt";
if (file_put_contents($file, $data) !== false) {
echo "数据写入成功";
} else {
echo "无法写入数据";
}
// 使用 FILE_APPEND 标志追加写入
$moreData = "More data
## 2.while条件循环
在 PHP 中,`while` 循环用于在满足特定条件的情况下重复执行一段代码块。它的基本语法如下:
```php
while (condition) {
// 循环体代码
}
关键点:
-
condition
是一个布尔表达式,用于定义循环的终止条件。只有在条件为true
时,循环体中的代码才会执行。 - 在每次循环迭代之后,条件会重新被判断。如果条件为
false
,循环将终止。 - 循环体内的代码会一直重复执行,直到条件不再满足。
- 可以在循环体内使用控制语句(如
break
和continue
)来控制循环的行为。
下面是一个使用 while
循环的示例,计算从 1 到 10 的和:
$sum = 0;
$i = 1;
while ($i <= 10) {
$sum += $i;
$i++;
}
echo "1 到 10 的和为:" . $sum;
以上代码将依次将 1、2、3、4、5、6、7、8、9、10 累加到 $sum
变量中,并最终输出结果。
sleep()函数
在 PHP 中,sleep()
是一个内置函数,用于使程序休眠指定的秒数。它的语法如下:
sleep(int $seconds): void
参数说明:
-
$seconds
:要休眠的秒数,必须是一个正整数。可以是小数,但会被自动转换为最接近的整数。
注意事项:
-
sleep()
函数会暂停当前脚本的执行,以确保脚本在指定的时间间隔内不会继续执行后续代码。 -
sleep()
的单位是秒,因此$seconds
参数的值应该是大于等于 0 的整数。
示例使用:
echo "开始休眠" . PHP_EOL;
sleep(3); // 休眠 3 秒
echo "休眠结束" . PHP_EOL;
在上述示例中,程序运行到 sleep(3)
时,会暂停执行 3 秒钟,然后继续执行后续代码。最终输出的结果会包括休眠前后的文本。
需要注意的是,sleep()
函数的使用主要是在命令行脚本或长时间运行的后端任务中,用于模拟等待时间或减少资源的使用。在 Web 应用程序中,过长的休眠时间可能会导致请求超时或造成用户体验不佳,因此需要慎重使用。
usleep()函数
在 PHP 中,usleep()
是一个内置函数,用于使程序休眠指定的微秒数(百万分之一秒)。它的语法如下:
usleep(int $microseconds): void
参数说明:
-
$microseconds
:要休眠的微秒数,必须是一个非负整数。
注意事项:
-
usleep()
函数会暂停当前脚本的执行,以确保脚本在指定的时间间隔内不会继续执行后续代码。 -
usleep()
的单位是微秒,即百万分之一秒,因此$microseconds
参数的值应该是非负整数。
示例使用:
echo "开始休眠" . PHP_EOL;
usleep(2000000); // 休眠 2 秒 (2,000,000 微秒)
echo "休眠结束" . PHP_EOL;
在上述示例中,程序运行到 usleep(2000000)
时,会暂停执行 2 秒钟(2,000,000 微秒),然后继续执行后续代码。最终输出的结果会包括休眠前后的文本。
需要注意的是,usleep()
函数通常用在需要较精确控制时间间隔的场景中,而不是一般的等待。它一般在一些特定的定时或延时需求中使用,例如在高性能网络服务、多进程或并行计算等方面。对于一般的等待或延时操作,更常见的做法是使用 sleep()
函数。文章来源:https://www.toymoban.com/news/detail-676074.html
@漏刻有时文章来源地址https://www.toymoban.com/news/detail-676074.html
到了这里,关于PHP使用Redis实战实录5:Redis实现消息队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!