27 April 2017

Job / Queue

Queue 是消息队列,开启消息队列的方式是

➜ php artisan queue:listen

Job 是消息队列上一个待处理的内容对象 (处理方法在 Job 的 handle 方法中)

将 Job 放到 Queue 上的方法是

dispatch(new xxxJob(xxx));

Event / Listener

Event 是事件,Listener 是事件的处理函数

需要在 eventServiceProvider 中定义

protected $listen  = [
    '事件名' => [ '触发的操作 1', '触发的操作 2' ]
];

laravel 在启动的时候,会解析 eventServiceProvider 这个文件,然后生成 $listeners 数组

定义完 event 和 listener 之后,可以通过命令直接生成文件

➜ php artisan event:generate

触发事件
事件是通过 Event::fire(new xxxEvent(xxx)); 来触发的。laravel 会根据 $listeners[xxxEvent] 查找当前事件的 listener ,然后调用 listener 的 handle 方法

Event 和 Job 的用法

例如一个用户注册,我们需要给他发送一封邮件。由于邮件是耗时操作,需要放到消息队列中来处理。
因此,我们可以定义一个用户注册事件,该事件的处理函数是将发送邮件这个操作 (Job) 放到 Queue 上。