laravel中job使用

Posted 微笑的死神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel中job使用相关的知识,希望对你有一定的参考价值。

一、使用目的:异步执行耗时操作
二、操作
1、生成job
php 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。

以上是关于laravel中job使用的主要内容,如果未能解决你的问题,请参考以下文章

laravel中job使用

Laravel:如何在控制器的几种方法中重用代码片段

小片段中的 ORA-06512 [重复]

Laravel- Jobs - 将 0 作为结果返回给模块内的控制器

laravel特殊功能代码片段集合

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段