Php+Redis队列原理
2024-09-08 13:08:19
我们新建一个文件queue.php
<?php
while(true){
echo 1;
sleep(1);
}
然后中 命令行里面 执行 php queue
你会发现每秒钟输出一个1;等了很久,咦,很神奇,为什么php没有超时呢?
对,就是不会超时,Why?
答:实际上PHP执行脚本是不会超时的,我们在网页中看到的诸如504等超时,是由Apache,Nginx,PHP配置文件设置的超时时间决定的,因为PHP命令行执行文件没有使用PHP配置文件,所以默认是不超时的
接下来我们演示redis+php实现队列
新建一个文件 artisan.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->auth('123456');//因为此处我设置了redis密码
while(1){
$res = $redis->lpop('listname');
if($res){echo $res."\r\n";}
sleep(1);
}
然后php artisan.php 执行队列
我们来新建一个窗口,进入redis客户端输入以下命令【不会redis的可以在我的博客中找相关资料】
lpush listname a b c d e f g
会发现php artisan这个队列会不断的把redis里我刚刚push进去的值打出来
其实laravel的队列就是这个原理,只不过,它不仅支持redis作为载体,还可以使用其他更多的数据库
有人就要问了,我这php artisa.php启动了,如果我把窗口关了不就没用了吗,
不不不,Linux 还是可以在后台运行的
只要在命令后面加个 &
php artisan &
就可以啦
最新文章
- Maven常用的命令
- PYTHON 文件操作
- js中object类型模拟java中的map
- Java for LeetCode 033 Search in Rotated Sorted Array
- 1、C语言中的函数指针
- wireshark删除filters记录
- Android四个多线程分析:MessageQueue实现
- Android多线程.断点续传下载
- HashMap 和 Hashtable 的 6 个区别
- (二分查找 拓展) leetcode278. First Bad Version
- [MySQL] timestamp和datetime的区别
- python字典与集合操作
- js字符串转数字(小数),数字转字符串
- 修改mongodb(带仲裁节点的副本集)各机器端口
- Excel--数据对比方法
- 【做题】BZOJ2534 L-gap字符串——调和级数
- 使用 node 创建代码服务器
- 学习mybatis-3 step by step 篇二
- HDFS问题集(一),使用命令报错:com.google.protobuf.ServiceException:java.lang.OutOfMemoryError:java heap space
- JavaWeb get请求乱码处理
热门文章
- h264封包介绍
- 洛谷 P2399 non hates math
- LeetCode之RemoveElement
- POJ 3080 Blue Jeans (后缀数组)
- 【cl】控制台执行Java程序
- Codeforces Round #200 (Div. 2)D. Alternating Current (堆栈)
- BEGINNING SHAREPOINT&;#174; 2013 DEVELOPMENT 第8章节--配送SP2013Apps 总结
- SQL SERVER读书笔记:JOIN
- [jzoj 6073] 河 解题报告 (DP)
- WEBGL学习笔记(七):实践练手1-飞行类小游戏之游戏控制