首页 > Web开发 > 详细

Php+Redis队列原理

时间:2019-03-13 13:11:14      阅读:175      评论:0      收藏:0      [点我收藏+]

我们新建一个文件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 &

就可以啦

Php+Redis队列原理

原文:https://www.cnblogs.com/wujf-myblog/p/10522150.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!