"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Laravel에서 예약된 작업을 만드는 방법은 무엇입니까?

Laravel에서 예약된 작업을 만드는 방법은 무엇입니까?

2024-11-03에 게시됨
검색:227

여러분, 안녕하세요! 오늘은 Laravel에서 예약된 작업을 생성하는 과정을 안내해 드리겠습니다. 사용자에게 매일 마케팅 이메일을 보내는 예를 들어보겠습니다.

1단계: 이메일 클래스 생성

먼저 다음 Artisan 명령을 사용하여 새로운 Mailable 클래스를 생성해 보겠습니다.

php artisan make:mail DailyMarketingEmail --view

이 명령은 App/Mail 디렉토리에 새로운 Mailable 클래스를 생성하고 resources/views/mail/ 디렉토리에 해당 뷰 파일 daily-marketing-email.blade.php를 생성합니다. 이 보기 파일 내에서 이메일 내용을 사용자 정의할 수 있습니다.

2단계: 장인 명령 생성

다음으로 DailyMarketingEmail 전송을 처리하는 Artisan 명령을 생성하겠습니다. 다음 명령을 실행하십시오:

php artisan make:command SendDailyMarketingEmail

이 명령은 app/Console/Commands 디렉터리에 새 명령 클래스를 생성합니다.

3단계: 명령 구조 이해

명령을 생성한 후 생성된 클래스에 두 가지 주요 속성이 표시됩니다.

protected $signature: Artisan 명령어의 이름과 서명을 정의합니다.
protected $description: 명령에 대한 설명을 제공합니다.
이 클래스의 핸들 메소드는 명령의 논리를 정의하는 곳입니다.

모든 것이 설정된 후 다음을 실행하여 모든 Artisan 명령을 나열할 수 있습니다.

php 장인

목록에 다음 명령이 표시됩니다.

How to create a scheduled Task in Laravel ?

4단계: 명령 논리 구현

이제 마케팅 이메일을 보내는 핸들 메소드 내 논리를 정의해 보겠습니다.

each(function ($user) {
            Mail::to($user->email)->send(new DailyMarketingEmail);
        });

    }
}

handle 메소드에서는 데이터베이스에서 모든 사용자를 검색하고 각 사용자에게 DailyMarketingEmail을 보냅니다.

5단계: 명령 테스트

다음을 실행하여 명령을 수동으로 테스트할 수 있습니다.

php artisan app:send-daily-marketing-emails

Mailtrap이나 MailHog와 같은 도구를 사용하여 테스트 중에 보낸 이메일을 확인하고 확인하는 것을 고려해 보세요.

6단계: 명령 예약

마지막으로 이 이메일을 매일 자동으로 보내려면 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분에 명령이 실행되도록 예약합니다. 필요에 따라 시간을 조정할 수 있습니다.

추가 제안:

  1. 이메일 대기열: 사용자 수가 많은 경우 이메일을 한꺼번에 보내는 것보다 대기열에 넣어 두는 것이 좋습니다. 이는 Mailable 클래스에 ShouldQueue 인터페이스를 구현하여 수행할 수 있습니다.

  2. 성능 고려 사항: 대규모 사용자 기반의 경우 효율적인 성능을 보장하기 위해 데이터베이스 쿼리 및 이메일 전송 프로세스를 최적화하는 것을 고려하십시오.

릴리스 선언문 이 기사는 https://dev.to/kepsondiaz/how-to-create-a-scheduled-task-in-laravel--54a0?1에 복제되어 있습니다. 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 삭제해
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3