最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php 队列的实现方法

来源:动视网 责编:小采 时间:2020-11-27 14:00:04
文档

php 队列的实现方法

php 队列的实现方法:php实现队列的方法:首先新建一个文件artisan.php;然后通过php artisan执行队列;最后进入redis客户端输入命令lpush listname a b c d e f g即可。推荐:《PHP视频教程》PHP实现队列的原理(laravel)用过laravel框架的童鞋都知道
推荐度:
导读php 队列的实现方法:php实现队列的方法:首先新建一个文件artisan.php;然后通过php artisan执行队列;最后进入redis客户端输入命令lpush listname a b c d e f g即可。推荐:《PHP视频教程》PHP实现队列的原理(laravel)用过laravel框架的童鞋都知道

推荐:《PHP视频教程》

PHP实现队列的原理(laravel)

用过laravel框架的童鞋都知道其自带队列功能,之前我很费解,PHP只是一个脚本,有超时机制。为什么能不停的去执行队列呢?

我们新建一个文件queue.php

<?php
while(true){
 echo 1;
 sleep(1); 
}

然后中 命令行里面 执行 php queue.php

你会发现每秒钟输出一个1;等了很久,咦,很神奇,为什么php没有超时呢?

对,就是不会超时,Why?

答:实际上PHP执行脚本是不会超时的,我们在网页中看到的诸如504等超时,是由Apache,Nginx,PHP配置文件设置的超时时间决定的,因为PHP命令行执行文件没有使用PHP配置文件,所以默认是不超时的。

ps -ef | grep php

会发现有一个 php queue进程

php超时的疑惑我们解决了

再来看一下队列的原理

新建一个文件 artisan.php

<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
while(1){
 $res = $redis->lpop('listname');
 if($res){echo $res."\r\n";}
 sleep(1);
}

然后php artisan 执行队列

我们来新建一个窗口,进入redis客户端输入以下命令

lpush listname a b c d e f g

会发现php artisan这个队列会不断的把redis里我刚刚push进去的值打出来

其实laravel的队列就是这个原理,只不过,它不仅支持redis作为载体,还可以使用其他更多的数据库

有人就要问了,我这php artisan.php启动了,如果我把窗口关了不就没用了吗?不不不,Linux 还是可以在后台运行的

只要在命令后面加个 &,或者nohup ... $ 放到后台运行即可,当然也可以加入crontab定时任务里去执行。

nohup php artisan.php &

文档

php 队列的实现方法

php 队列的实现方法:php实现队列的方法:首先新建一个文件artisan.php;然后通过php artisan执行队列;最后进入redis客户端输入命令lpush listname a b c d e f g即可。推荐:《PHP视频教程》PHP实现队列的原理(laravel)用过laravel框架的童鞋都知道
推荐度:
标签: 方法 php 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top