关于Laravel8事件系统:事件处理器未生效的问题记录

此篇文章属于一个刚刚的心得体会,当问题博云见日后,你会发现这是一个很低级的错误,但是在处理的过程中,自己的三观和信心受到了极大的挑战。

我写了一个程序,通过计划任务执行Artisan命令类,检查数据表中符合要求的记录,通过事件处事器,放到队列异步执行。

在开发服务器上顺利实现,我就将程序部署到灰度环境做演示操作,结果没生效。

通过dd()断点测试,在事件类的__construct()中打印,是有反应的,但是在事件处理器类的handle中,打断点没有任何反应。

这种情况,第一步排查定义的事件类和处理器是否有语法错误。
第二步:检查app/Providers/EventServiceProvider.php 中建立的映射关系。

但其实这两步都没有闭要,因为真是上述出错,我的开发服务器程序也不会顺利执行。

我似乎遗忘了什么操作,这种情况肯定和缓存有关了。我平时常用的框架缓存就是清路由和配置文件的,我在Google搜索了一下,才发现事件处理这块也是有缓存的。

真是一个低级错误,这块我居然忘了自己之前在灰度服务器上,生成了事件处理的缓存。现在增加了新的事件类,不更新缓存,它当然不会生效了。

特此写文章记录下来,下面是社区手册里的原文:关于事件系统的缓存,在生产环境中的使用。

在生产环境中,你可能不希望框架在每个请求上扫描所有监听器。 因此,在部署过程中,你应该运行 event:cache Artisan 命令来缓存应用程序的所有事件和监听器的列表。
框架将使用此列表来加速事件注册过程。event:clear 命令则可用于销毁缓存。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!