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 &

php中队列控制的方法,学习猿地-php 队列的实现方法相关推荐

  1. php如何删除数据库中的数据库文件夹,学习猿地-php数据库如何删除数据

    php数据库删除数据的方法:首先创建一个代码文件:然后通过PHP函数"mysql_query"执行"SQL DELETE"语句从MySQL表中删除数据即可. 本 ...

  2. oracle中rac是什么意思,学习猿地-oracle rac是什么?

    RAC全称real application clusters,译为"实时应用集群", 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计 ...

  3. java栈和队列实现删除,数据结构学习--Java栈和队列

    栈:先进后出 队列:先进先出 都是数组存放,但是删除的时候不是删除了数组中的数据,而是使用增加游标标识的方式实现删除,"游标标识"加加或者减减完成删除操作,查看的时候,也不是直接查 ...

  4. Linux系统中消息队列,共享内存、信号和线程的基本操作使用方法

    Linux系统中消息队列,共享内存.信号和线程高级操作 第十一章 消息队列 10.1消息队列定义 10.2 消息队列特点 10.3 key值 10.4 创建消息队列 10.4.1 发送消息 10.4. ...

  5. C#中的扩展方法学习总结

      版权声明:本文由秦元培创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处,本文作者为秦元培,本文标题为C#中的扩展方法学习总结,本文 ...

  6. Java多线程学习二十四:阻塞队列包含哪些常用的方法?add、offer、put 等方法的区别?

    阻塞队列包含哪些常用的方法,以及 add,offer,put 等方法的区别. 在阻塞队列中有很多方法,而且它们都非常相似,所以非常有必要对这些类似的方法进行辨析,所以本课时会用分类的方式,和你一起,把 ...

  7. KDD2021 | 推荐系统中利用深度哈希方法学习类别特征表示

    本文分享一篇谷歌团队发表在KDD'21的推荐系统文章:不使用嵌入表的方式获得类别特征的表征用于推荐系统[1]. 本文结构组织如下: 背景 已有的类别特征嵌入方法 One-hot Full Embedd ...

  8. java console不见了_解决eclipse中console控制选项不见了的方法

    eclipse是一款用于编译java语言的程序,利用这款软件我们可以制作很多有趣的小程序,也可以制作一些大型的软件项目.在实际的操作中,eclipse是由多个工具栏组成的,其中console就是用于查 ...

  9. python代码:基于强化学习的智能电网的动态定价方法 摘要:提出了一种考虑服务提供商(SP)利润和用户(CUs)成本的分级电力市场中能量管理的动态定价DR算法

    python代码:基于强化学习的智能电网的动态定价方法 摘要:提出了一种考虑服务提供商(SP)利润和用户(CUs)成本的分级电力市场中能量管理的动态定价DR算法. 使用强化学习(RL)描述分层决策框架 ...

最新文章

  1. 3维线程格 gpu_基于CUDA的GPU并行优化重力三维反演
  2. 【IDAX投研中心】BCH诞生一周年 “青出于蓝而胜于蓝”吗?
  3. vuex刷新页面数据丢失怎么解决_vuex状态机浅谈
  4. 一二三维矩阵的拼接问题
  5. HashMap 源码解析(JDK1.8)
  6. nginx可以负载均衡多个tomcat,nginx主机挂了怎么办?Keepalived
  7. 大前端的自动化工厂(1)——Yeoman
  8. OpenSCAD设计的3D打印智能路由器盒子(V1.1)
  9. 数字信号处理实验matlab版答案,数字信号处理习题答案及matlab实验详解.pdf
  10. 玩转木浪云数据管理免费版使用篇之内容搜索与颗粒度恢复
  11. Elasticsearch(待学习)
  12. Ambisonics声音格式及麦克
  13. 智能快递柜在小区的应用
  14. V4L2框架-视频流的停止(VIDIOC_STREAMOFF)
  15. package titlesec error: nested titles
  16. 6000字长文,终于将数据中台架构体系讲明白了
  17. magic-api的使用体验
  18. [蓝桥杯][2018年第九届真题]日志统计(尺取法)
  19. 如何给PDF解密?建议收藏这些方法
  20. 如何回答:你对运维(大数据)工作了解多少?被录用后打算如何展开工作?

热门文章

  1. html之文档的头部和元数据定义(下,未写完)
  2. Hbase 查看 rowkey在哪个region中
  3. 阿里云数据库开源发布:PolarDB三节点高可用的功能特性和关键技术
  4. 2021杭州·云栖大会来了!门票免费预约!
  5. 1万亿次、10亿人、10亿张,科技给生活带来多少改变?
  6. AI时代,你的职业会是?99%的人都无法直面!
  7. Flink 零基础实战教程:如何计算实时热门商品
  8. 老司机教你分析日志:分析用户的地理位置信息
  9. Web 自动化神器,批量下载美图,可直接导入使用
  10. 安迈云加入GDCA全球分布式云联盟,携手业内共建新生态