1、在.env檔案中進行配置(預設為異步,資料庫)
QUEUE_CONNECTION=database
2、生成隊清單
php artisan queue:table
執行
php artisan migrate
3、資料庫中會生成jobs和failed_jobs兩張表
jobs存放未執行的隊列
failed_jobs存放執行失敗的隊列
4、生成Job類(位于app\Jobs\SendEmailJob.php)
php artisan make:job SendEmailJob
編輯(在handle裡面寫業務邏輯,比如發送郵件、發送短信、發送微信模闆消息)
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 SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $email;
public function __construct($email)
{
$this->email = $email;
}
public function handle()
{
Email::send($this->email);
}
}
5、在業務邏輯中使用(比如向所有使用者發送優惠資訊郵件)
foreach(User::select(['email'])->pluck('email')->toArray() as $email){
dispatch(SendEmailJob($email));
}
注:此步并不會發送郵件,隻是把發送郵件添加到隊列裡面,此時打開jobs表,會發現記錄
6、運作隊列
php artisan queue:work
隊列開始執行,當隊列執行完畢時,jobs表為空,如果有執行失敗的條目,将會存到failed_jobs表裡面
此外,可用supervison守護程序
7、寶塔面闆使用supervison守護隊列程序
7.1、寶塔面闆-軟體-supervison-安裝
7.2、打開,添加守護程序
名稱:test
啟動使用者:root或者www
運作目錄:/www/wwwroot/abc.com (項目根目錄)
啟動指令:/www/server/php/74/bin/php artisan queue:work
程序數量:1
7.3、點選建立,會自動啟動該指令