php - 如何确保在开始下一个事件之前执行并完成同一事件的多个 Laravel 侦听器?
问题描述
我有一个 Laravel 5.7(带有 PHP 7.2)应用程序,它使用带有 Redis 队列的事件和侦听器。我有一些工作人员消耗队列并执行侦听器。
这是我在课堂上的事件和听众互动EventServiceProvider
:
protected $listen = [
SavedObject::class => [
Listener1::class,
Listener2::class,
Listener3::class,
],
];
我的问题是我需要在Listener2
执行之前执行并完成Listener3
。Laravel 确保侦听器按顺序执行,但如果我有多个工作人员,Listener2
则会执行,在它完成之前,另一个工作人员执行Listener3
并破坏一切。
如何确保Listener2
在开始Listener3
执行之前完成?也许是一种使用同一个工作人员执行同一事件的所有侦听器以确保这一点的方法?
解决方案
您可以创建一个“链”,当 Listener1 结束时触发 Listener2,然后触发 Listener3
Event::fire("Eventname", $attributes);
推荐阅读
- python - Python平均嵌套字典列表列表
- opentext - 如何修复 Captiva 识别中的“不支持颜色深度(每像素 32 位)”错误?
- android - Android 应用程序 - 按用户排序的调试日志数据可实时用于客户服务目的
- arrays - “错误:LoadError:BoundsError:尝试访问索引 [1] 处的 0 元素数组 {Candidate,1}”尝试填充复合类型的空数组时
- java - 如何生成随机字节,然后在 Swift 中将它们转换为字符串
- r - 使用 R 中的矢量化代码比较和替换多列之间的值
- python - 进程以 Python 中的退出代码 -1073741571 (0xC00000FD) 完成
- javascript - 我可以使用 Google Apps 脚本将 Google 表格中的条件格式注入 Google 幻灯片吗?
- python - 修改数据集的某些元素时发出警告
- python - 矩阵大小不兼容:In[0]: [32,97], In[1]: [121,80] [[{{node dense_46/Relu}}]]