位置: 编程技术 - 正文

浅谈Laravel队列实现原理解决问题记录(laravel自带队列效率)

编辑:rootadmin

推荐整理分享浅谈Laravel队列实现原理解决问题记录(laravel自带队列效率),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:laravel队列消费方式,laravel队列失败了如何处理,laravel自带队列效率,laravel队列消费方式,laravel 队列,laravel自带队列效率,laravel队列的实现原理,laravel队列的实现原理,内容如对您有帮助,希望把文章链接给更多的朋友!

问题

公司项目使用Laravel的开发的两个项目在同一个测试服务器部署,公用同一个redis。在使用laravel中的队列时,产生冲突干扰。

查找问题原因

在laravel 队列的操作类IlluminateQueueRedisQueue.php中可以看到pushRaw()方法:

从该方法中可以看出Lrarvel队列的redis实现是通过list结构实现的,rpush(key, value)是将value推入键值为key的redis队列,key的值则是通过$this->getQueue($queue) 获取到的

所以的redis中list中的key是 'queues:'.($queue &#;: $this->default);拼接的,$this->default 的值是 RedisQueue 实例化的时候从configqueue.php配置中加载的 'queue' => 'default',$queue 是添加队列时$this->dispatch( new jobClass()->onQueue($queue) )传入的。

至此,两个项目的队列冲突原因就找到了。因为redis队列配置中 'queue' => 'default' 都使用的默认的default,所以当共用redis时,默认的队列list 都是'queue:default',所以导致了冲突。

浅谈Laravel队列实现原理解决问题记录(laravel自带队列效率)

因为队列监听 监听的队列名称是由 --queue参数决定的,如果不传就是我们上面设置的默认值,若传了就会根据传入的队列名从前往后优先依次处理,具体见代码IlluminateQueueWorker.php中:

$queue就是--queue=传入的参数,当 $queue不存在是直接调用$connection->pop()当参数存在时会将参数解析,优先处理排在前面的队列名称,将队列名称传入pop($queue), pop()会尝试从指定队列或默认队列中获取队列任务

至此搞清了队列执行的原理。

解决方法

将queue的配置文件中默认队列修改为不同的名称,比如: 'queue' => laravel1','queue' => laravel2'。

队列监听 php artisan queue:listen redis --queue=laravel1,syncExpress

最后

遇到问题,莫要病急乱投医。从代码入手,分析理解实现原理,找对点,解决方法也许很简单,希望对大家的学习有所帮助,也希望大家多多支持积木网。

php创建多级目录完整封装类操作方法 创建多级目录函数中调用创建指定下的指定文件的函数:publicfunctioncreate_dir($dir,$mode=){returnis_dir($dir)or($this-create_dir(dirname($dir))andmkdir($dir,$mode));}创建

cookie的优化与购物车实例 一Cookie的优化1.1一般而言,我们设置cookie是在php中设置例如:phpsetcookie('testKey1','helloworld',0,'/');//#当expires=0时,此Cookie随浏览器关闭而失效,而在验证的

详谈PHP基础与JS操作的区别(必看篇) 嵌入页面方式JS嵌入方式:script/scriptPHP嵌入方式:php(常用)输出语法Javascript输出1.alert("警告的内容")2.prompt("提示的内容")3.document.write()(页面输出内容)PHP

标签: laravel自带队列效率

本文链接地址:https://www.jiuchutong.com/biancheng/289916.html 转载请保留说明!

上一篇:yii2 commands模式以及配置crontab定时任务的方法(yii2入门)

下一篇:php创建多级目录完整封装类操作方法(php多级分类)

  • 股权转让企业所得税纳税地点
  • 递延所得税资产借贷方向
  • 先开票,后发货怎么处理
  • 异地车辆流程
  • 清算缴纳企业所得税
  • 生产经营所得的税率表
  • 独立核算的优点
  • 现金日记账划线更正法
  • 购销业务账务处理
  • 人力资源代缴社保合法吗
  • 资产评估收益法的前提条件
  • 稿酬所得是否需要按照累计预扣税率
  • 免税货物开成含税率的怎么报税?
  • 季报每个月需要反写吗
  • 购进货物未取得增值税专用发票
  • 不得抵扣的进项税额怎么处理
  • 没有签订劳动合同员工离职怎么处理
  • 财付通交易手续费多少
  • 预收房款属于什么科目
  • 净资产属于政府预算会计要素吗
  • 文化交流活动开展方案
  • 成本算错了
  • 出口退税进口免税
  • 工厂材料成本改善报告范文
  • 苹果手机id被锁定什么意思
  • 出售使用过的设备
  • 超市打折优惠
  • 华为鸿蒙系统如何关闭纯净系统
  • 如何pingip地址
  • 富士通FUJITSU笔记本电脑开机进入BIOS的方法(F2)
  • php字符串型数据的定义方式
  • 购货款先到支付后付款
  • php数组转js数组
  • 工会经费两种拨缴方式
  • nodejs安装教程
  • 日落时分是什么意思
  • php实现发送邮件
  • phpstorm wsl
  • 房地产企业季度所得税预缴扣除附加税吗
  • 参展费会计分录
  • 买一赠一的销售方式
  • 已认证未抵扣完的进项
  • 让渡资产使用权属于收入吗
  • 小规模纳税人转让土地使用权税率
  • 中秋福利做账
  • 打印银行电子回单有断号
  • 个体工商户怎么注册
  • 销项100万进项80万交多少税
  • 货物已到发票未到怎么做账
  • 小规模纳税人减按1%怎么计算
  • 买车抵扣增值税超销项怎么算
  • 商业会计和财务会计
  • 工程物资是
  • 无奖有票是什么意思
  • 存货报废的会计分录怎么做
  • 主营业务成本带二级科目吗
  • 加油站汽油损耗分析
  • 增发股票会计科目
  • mysql ERROR 1044 (42000): Access denied for user ''@'localhost' to database
  • mysql alter table修改表命令整理
  • win10系统电脑如何共享
  • mac app store打开一片空白
  • os x yosemite wifi断线怎么办?yosemite wifi掉线解决详细步骤
  • centos6.7防火墙
  • win7虚拟内存如何转移到D盘
  • Linux服务器架设指南百度网盘
  • 笔记本电脑显示英特尔服务未在运行
  • 如何开启金山毒霸
  • javascript Event对象详解及使用示例
  • android_zh
  • unity3d官方案例
  • unity进度条控制动画进度
  • unity socket udp
  • 彻底弄懂js中的this指向
  • vue curd生成
  • 表单失去焦点事件
  • shell中的-n
  • fiori开发工具
  • 专票单张限额多少
  • 陕西的发票在哪里领取
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设