無涯教程: 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM