事件,侦听器,作业,队列之间的Laravel差异[已关闭]
这听起来非常让我困惑,有什么区别?有人可以做一个ELI5吗?
虽然它们都可以一起工作,但我发现最简单的方法是一起查看事件和侦听器,然后将作业和队列放在一起。
事件和侦听器
事件是保存“触发”的数据的对象,Laravel 事件系统在事件对象被激发时“捕获”该事件对象,然后运行为该特定事件注册的所有侦听器。
如果您仔细想想,这类似于异常的工作方式。抛出一个异常,并且可以定义几个捕获块,以便根据引发的异常做出反应。对于事件和侦听器,将引发一个事件,并且一个或多个侦听器表示 catch 块的内容。虽然相似,但事件和侦听器不是错误处理程序,但它们只是具有概念上的相似性。
作业和队列
我认为最好的思考方式就像银行的一条线。该行本身就是队列,该行中的每个客户都是一个作业。
为了处理队列中的作业,您需要命令行进程或守护程序。将命令行上启动队列守护程序视为将新的银行柜员添加到可用银行柜员池中。当守护程序可用时,它将要求队列执行下一个作业,就像银行柜员要求排队的下一个人踏入窗口一样。
排队的每个人都有一个他们想要完成的特定任务,比如存款或取款。排队的人需要完成的动作是Laravel中的工人。
Worker 是守护程序将为从队列中获取的作业执行的操作,就像任务是银行出纳员将为从队列中前进的客户执行的操作一样。
希望其中任何一个都有一定的道理。