关于php:laravel中job使用

4次阅读

共计 1165 个字符,预计需要花费 3 分钟才能阅读完成。

一、应用目标:异步执行耗时操作
二、操作
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。

正文完
 0