여러분, 안녕하세요! 오늘은 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 장인
목록에 다음 명령이 표시됩니다.
이제 마케팅 이메일을 보내는 핸들 메소드 내 논리를 정의해 보겠습니다.
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') 메서드를 사용하여 매일 오전 8시 30분에 명령이 실행되도록 예약합니다. 필요에 따라 시간을 조정할 수 있습니다.
이메일 대기열: 사용자 수가 많은 경우 이메일을 한꺼번에 보내는 것보다 대기열에 넣어 두는 것이 좋습니다. 이는 Mailable 클래스에 ShouldQueue 인터페이스를 구현하여 수행할 수 있습니다.
성능 고려 사항: 대규모 사용자 기반의 경우 효율적인 성능을 보장하기 위해 데이터베이스 쿼리 및 이메일 전송 프로세스를 최적화하는 것을 고려하십시오.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3