안녕하세요 여러분! 오늘은 Laravel에서 예약된 작업을 생성하는 과정을 안내해 드리겠습니다. 사용자에게 매일 마케팅 이메일을 보내는 경우를 예로 들어보겠습니다.
먼저 다음 Artisan 명령을 사용하여 새로운 Mailable 클래스를 생성해 보겠습니다.
php artisan make:mail DailyMarketingEmail --view
이 명령은 App/Mail 디렉토리에 새로운 Mailable 클래스를 생성하고 resources/views/mail/ 디렉토리에 해당 뷰 파일 daily-marketing-email.blade.php를 생성합니다. 이 보기 파일 내에서 이메일 내용을 사용자 정의할 수 있습니다.
다음으로 DailyMarketingEmail 전송을 처리하는 Artisan 명령을 생성하겠습니다. 다음 명령을 실행하세요:
php artisan make:command SendDailyMarketingEmail
이 명령은 app/Console/Commands 디렉터리에 새 명령 클래스를 생성합니다.
명령을 생성한 후 생성된 클래스에 두 가지 주요 속성이 표시됩니다.
protected $signature: Artisan 명령의 이름과 서명을 정의합니다.
protected $description: 명령에 대한 설명을 제공합니다.
이 클래스의 핸들 메소드는 명령의 논리를 정의하는 곳입니다.
모든 것이 설정된 후 다음을 실행하여 모든 Artisan 명령을 나열할 수 있습니다.
php 장인
목록에 명령이 표시됩니다.
이제 마케팅 이메일을 보내는 핸들 메소드 내 논리를 정의해 보겠습니다.
<?php namespace App\Console\Commands; use App\Models\User; use Illuminate\Console\Command; use App\Mail\DailyMarketingMail; use Illuminate\Support\Facades\Mail; class SendDailyMarketingEmails extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'app:send-daily-marketing-emails'; /** * The console command description. * * @var string */ protected $description = 'Send a marketing email to all users'; /** * Execute the console command. */ public function handle() { $users = User::get(); $users->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 메소드에서 명령을 예약해야 합니다.
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * Define the application's command schedule. */ protected function schedule(Schedule $schedule): void { $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') 메서드를 사용하여 매일 오전 8시 30분에 명령이 실행되도록 예약합니다. 필요에 따라 시간을 조정하시면 됩니다.
이메일 대기열: 사용자 수가 많은 경우 이메일을 한꺼번에 보내는 것보다 대기열에 넣어 두는 것이 좋습니다. 이는 Mailable 클래스에 ShouldQueue 인터페이스를 구현하여 수행할 수 있습니다.
성능 고려 사항: 대규모 사용자 기반의 경우 효율적인 성능을 보장하기 위해 데이터베이스 쿼리 및 이메일 전송 프로세스를 최적화하는 것을 고려하십시오.
위 내용은 Laravel에서 예약된 작업을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!