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