事件/广播
1.命令
事件在目录Events中, 监听器在Listeners中1
2
3php artisan make:event OrderPaid // 创建一个事件
php artisan event:generate // 根据providers下EventServiceProvider中的$listen数组创建事件和监听器
2.触发事件1
event(new EventName($model));
3.简介
一个监听器只监听一个事件,一个事件可以有多个监听器。如果是广播事件,则无需监听器。
Event如果不是广播事件,则需要在EventServiceProvider中进行监听器注册。
事件监听可以认为是特定事件发生的一个Job,一旦事件创建,监听器就会触发。
事件 一般用在一些业务场景,有更好的扩展性。
4.使用场景
适合耗时短的操作。例如,更改数据字段状态。event 的好处是,可以复用各种监听。又如购买完成后发送短信,
后来又想发送邮件,只要再注册个事件即可,不用改动原有的逻辑代码。
还有:注册完成、更新完成、发送完成等等。
任务/队列
1.命令
命令,生成任务(目录jobs)1
php artisan make:job JobName
2.调用任务
控制器中:1
$this->dispatch();
3.简介
Job 一般用作异步。如果你想延迟执行一个操作,或者这个过程需要花费一段时间,但又不是主进程需要处理的事情,
那么就可以选择用Job,例如上传一个比较大的文件。
4.使用场景
Job 一般用在正在处理的事情,适合耗时长的任务。例如,批量发送邮件,短信; 记录日志。
Job可以不间断的执行,类似于我们要在每晚凌晨执行一个脚本。还有正在注册、正在更新、批量发放等等。