無涯教程: Laravel 8 - 隊列介紹

有時,你發送電子郵件或站內消息比較費時,這時可以使用隊列處理這些任務。

步驟1:下載Laravel 8

首先,我們需要使用下面命令獲取最新的Laravel 8版本應用程序。

composer create-project --prefer-dist laravel/laravel blog

步驟2:創建郵件設置

我們將從頭開始,並且第一步,我們將使用Laravel Mail Facade創建電子郵件進行測試。因此,讓我們簡單地運行命令。

php artisan make:mail SendEmailTest

 

現在,您將在帶有SendEmailTest.php文件的應用程序目錄中擁有新文件夾"Mail"。

app/Mail/SendEmailTest.php

<?php
  
namespace App\Mail;
  
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
  
class SendEmailTest extends Mailable
{
    use Queueable, SerializesModels;
  
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
   
    }
  
    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.test');
    }
}

好的,現在我們需要使用blade文件創建電子郵件視圖。

resources/views/emails/test.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>How to send mail using queue in Laravel 8? - learnfk</title>
</head>
<body>
   
<center>
<h2 style="padding: 23px;background: #b3deb8a1;border-bottom: 6px green solid;">
    <a href="https://learnfk.com">歡迎問我們的網站 : 無涯教程</a>
</h2>
</center>
  
<p>Hi, Sir</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
  
<strong>Thank you Sir. :)</strong>
  
</body>
</html>

配置完視圖文件後,我們必須設置電子郵件發送函數,因此讓我們在.env文件中設置配置:

.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=123456
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="${APP_NAME}"

步驟3:隊列配置

首先,我們將隊列驅動器設置爲“database"。您可以根據需要設置驅動程序,也將驅動程序定義爲redis。因此,這裏在".env"文件上定義數據庫驅動程序:

.env

QUEUE_CONNECTION=database

 

之後,我們需要生成遷移併爲隊列創建表。因此,讓我們爲隊列數據庫表運行遷移命令:

生成遷移:

php artisan queue:table

運行遷移:

php artisan migrate

步驟4:創建隊列作業

現在,我們將使用以下命令創建隊列作業,此命令將使用Queueable創建隊列作業文件。

php artisan make:job SendEmailJob

現在,您在“Jobs"目錄中具有SendEmailJob.php文件。因此,讓我們看一下該文件,然後在該文件上添加以下代碼。

app/Jobs/SendEmailJob.php

<?php
  
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;
use App\Mail\SendEmailTest;
use Mail;
  
class SendEmailJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  
    protected $details;
  
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details = $details;
    }
  
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $email = new SendEmailTest();
        Mail::to($this->details['email'])->send($email);
    }
}

步驟5:測試隊列任務

現在是時候使用並測試創建的隊列作業了,所以讓我們使用以下代碼簡單地創建路由來測試創建的隊列。

routes/web.php

Route::get('email-test', function(){
  
    $details['email'] = '[email protected]';
  
    dispatch(new App\Jobs\SendEmailJob($details));
  
    dd('done');
});

確定路由定義,您可以使用Laravel Queue命令觀看隊列進程,因此讓我們運行以下命令:

php artisan queue:listen

如果隊列可行,您將看到以下內容:

 

 

您還可以使用以下命令清除Config Cache:

php artisan config:clear

 

現在,您可以使用以下命令運行項目:

php artisan serve

現在運行您的項目和打開鏈接:

http://localhost:8000/email-test

https://www.learnfk.com/article-laravel-8-queue-step-by-step-tutorial-exampleexample

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章