Laravel5.4 Queues佇列學習

Corwien發表於2019-02-16

Laravel提供了開箱即用的佇列服務,佇列允許您延遲處理耗時的任務,例如傳送電子郵件,直到稍後的時間。推遲這些耗時的任務會大大加速您的應用程式的Web請求。

一、生成佇列表

php artisan queue:table

php artisan migrate

二、生成Job類

這裡我們給傳送郵件操作新增佇列操作

php artisan make:job SendReminderEmail

SendReminderEmail.php

<?php

namespace AppJobs;

use AppModelsUser;
use IlluminateBusQueueable;
use IlluminateQueueSerializesModels;
use IlluminateQueueInteractsWithQueue;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;

class SendReminderEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected  $user;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // 列印除錯
        Log::info(`send remind email to` . $this->user->email);
    }
}

我們以 User Model為例,先在構造器方法中注入User 類,然後在UsersController.php 中使用dispatch 加入到佇列中,dispatch(new SendReminderEmail($user));

新增到佇列後,我們需要在handle() 方法中處理具體的業務邏輯,如給具體的使用者物件傳送郵件,最後執行佇列命令,即可傳送郵件。

php artisan queue:work 

相關文章