一、使用目的:异步执行耗时操作
二、操作
1、生成jobphp artisan make:job UserLoginSendEmail
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class UserLoginSendEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $data;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
info('UserLoginSendEmail'.date('Y-m-d H:i:s').json_encode($this->data,JSON_UNESCAPED_UNICODE));
}
}
2、控制器中添加job分发
public function register(Request $request){
$data = [
'id' => '1',
'username' => 'testname',
'email' => '1078962834@qq.com'
];
//发送邮件job
UserLoginSendEmail::dispatch($data);
}
3、运行队列执行分发的job
php artisan queue:work
[2021-05-16 08:50:30][BF9EeQDymybeYBBpKiAetg0zdjWUM8dL] Processing: App\Jobs\UserLoginSendEmail
[2021-05-16 08:50:30][BF9EeQDymybeYBBpKiAetg0zdjWUM8dL] Processed: App\Jobs\UserLoginSendEmail
三、event、job区别
1、job 是异步执行。适合耗时长的任务。例如,批量发送邮件,短信。
2、event 是在 request 的生命周期内执行。适合耗时短的操作。例如,更改数据字段状态。
3、event 的好处是,可以复用各种监听。例如,事件 A1 可以触发 B1, B2; 事件 A2 可以触发 B1, B2, B3。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。