大家好!今天,我將引導您完成在 Laravel 中建立排程任務的過程。我們將以向用戶發送每日行銷電子郵件為例。
首先,讓我們使用以下 Artisan 指令建立一個新的 Mailable 類別:
php artisan make:mail DailyMarketingEmail --view
此指令在 App/Mail 目錄中產生一個新的 Mailable 類,並在 resources/views/mail/ 目錄中產生對應的視圖檔案 daily-marketing-email.blade.php。您可以在此檢視文件中自訂電子郵件的內容。
接下來,我們將建立一個 Artisan 指令來處理傳送 DailyMarketingEmail。執行以下命令:
php artisan make:command SendDailyMarketingEmail
此指令會在app/Console/Commands目錄下產生一個新的指令類別。
產生指令後,您將在產生的類別中看到兩個關鍵屬性:
protected $signature:這定義了 Artisan 指令的名稱和簽章。
protected $description:這提供了命令的描述。
此類別中的句柄方法是您定義命令邏輯的地方。
一切設定完畢後,您可以透過執行以下指令列出所有 Artisan 指令:
php 工匠
您應該在清單中看到您的命令:
現在,讓我們在handle方法中定義發送行銷電子郵件的邏輯:
each(function ($user) { Mail::to($user->email)->send(new DailyMarketingEmail); }); } }
在handle方法中,我們從資料庫中檢索所有使用者並向每個使用者發送DailyMarketingEmail。
您可以透過執行手動測試您的命令:
php artisan app:send-daily-marketing-emails
考慮使用 Mailtrap 或 MailHog 等工具在測試期間擷取和檢視已傳送的電子郵件。
最後,為了每天自動發送這封電子郵件,我們需要在位於 app/Console/ 目錄的 Kernel.php 檔案的 Schedule 方法中安排命令:
command('app:send-daily-marketing-emails')->dailyAt('08:30'); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
在這裡,我們使用 dailyAt('08:30') 方法安排命令在每天上午 08:30 運行。您可以根據需要調整時間。
排隊電子郵件:對於大量用戶來說,將電子郵件排隊而不是一次性發送所有電子郵件是一個很好的做法。這可以透過在 Mailable 類別中實作 ShouldQueue 介面來完成。
效能注意事項:對於大型用戶群,請考慮優化資料庫查詢和電子郵件發送流程,以確保高效的效能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3