培训机构软件开发,上海网络推广优化公司,衡水网站建设多少钱,快速的网站设计制作php实现队列的方法#xff1a;首先新建一个文件“artisan.php”#xff1b;然后通过“php artisan”执行队列#xff1b;最后进入redis客户端输入命令“lpush listname a b c d e f g”即可。PHP实现队列的原理(laravel)用过laravel框架的童鞋都知道其自带队列功能#xff…php实现队列的方法首先新建一个文件“artisan.php”然后通过“php artisan”执行队列最后进入redis客户端输入命令“lpush listname a b c d e f g”即可。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