> PHP 프레임워크 > Laravel > Laravel을 사용한 큐잉 및 작업 스케줄링: 애플리케이션 동시성 향상

Laravel을 사용한 큐잉 및 작업 스케줄링: 애플리케이션 동시성 향상

WBOY
풀어 주다: 2023-08-13 17:49:42
원래의
1480명이 탐색했습니다.

Laravel을 사용한 큐잉 및 작업 스케줄링: 애플리케이션 동시성 향상

대기열 및 작업 예약을 위해 Laravel 사용: 애플리케이션 동시성 향상

요약:
웹 애플리케이션을 개발하는 동안 일반적으로 이메일 보내기, 보고서 생성 또는 대용량 데이터 처리와 같은 다양한 백그라운드 작업을 처리해야 합니다. 이러한 작업에는 많은 시간이 걸릴 수 있으며 요청 처리 프로세스에 직접 배치하면 응답 시간이 느려질 수 있습니다. 애플리케이션의 동시성을 향상시키기 위해 Laravel의 대기열 처리 및 작업 예약 기능을 사용할 수 있습니다.

1. 대기열 처리 및 작업 예약이란 무엇입니까?
Laravel에서 큐잉은 시간이 많이 걸리는 작업을 백그라운드 처리로 미루는 방법입니다. 작업 스케줄링은 특정 시간이나 특정 규칙에 따라 실행될 작업을 배열하는 방법입니다. 대기열 처리 및 작업 예약을 사용하면 작업을 메시지 대기열에 넣고 백그라운드 프로세스에 의해 비동기적으로 처리할 수 있으므로 사용자 요청에 대한 대기 시간이 줄어들고 애플리케이션 동시성이 향상됩니다.

2. 대기열 처리 구성

  1. 대기열 처리 드라이버 설치
    Laravel에서는 Redis, Beanstalkd 또는 데이터베이스와 같은 다양한 대기열 처리 드라이버를 선택할 수 있습니다. 구성 파일을 통해 선택과 설정을 할 수 있습니다. 예를 들어, .env 파일에서 QUEUE_CONNECTION 변수를 설정하여 Redis 드라이버를 사용하도록 선택할 수 있습니다:

    QUEUE_CONNECTION=redis
    로그인 후 복사
  2. 작업 클래스 생성
    Laravel에서는 작업 클래스를 생성하여 대기열 처리를 위한 특정 작업을 정의할 수 있습니다. Artisan 명령어를 사용하여 새로운 태스크 클래스를 생성할 수 있습니다. 예를 들어 이메일 보내기 태스크를 생성할 수 있습니다:

    php artisan make:job SendEmail
    로그인 후 복사

    이렇게 하면 app/Jobs 디렉토리에 SendEmail.php 태스크 클래스가 생성됩니다.

  3. 쓰기 대기열 처리 논리
    작업 클래스에서는 특정 대기열 처리 논리를 정의할 수 있습니다. 예를 들어, SendEmail 태스크 클래스에서는 Laravel이 제공하는 mail 클래스를 사용하여 이메일을 보낼 수 있습니다:

    <?php
    namespace AppJobs;
    use IlluminateBusQueueable;
    use IlluminateContractsQueueShouldQueue;
    use IlluminateFoundationBusDispatchable;
    use IlluminateQueueInteractsWithQueue;
    use IlluminateQueueSerializesModels;
    use IlluminateSupportFacadesMail;
    class SendEmail implements ShouldQueue
    {
     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
     protected $email;
     protected $subject;
     protected $body;
     public function __construct($email, $subject, $body)
     {
         $this->email = $email;
         $this->subject = $subject;
         $this->body = $body;
     }
     public function handle()
     {
         Mail::to($this->email)->send(new AppMailNotification($this->subject, $this->body));
     }
    }
    로그인 후 복사
  4. Queue task call
    이메일을 보내야 할 때 다음 코드를 사용하여 SendEmail 태스크를 추가할 수 있습니다. 대기열:

    SendEmail::dispatch($email, $subject, $body);
    로그인 후 복사

    백그라운드 프로세스에서 처리할 대기열에 SendEmail 작업을 추가합니다.

3. 작업 스케줄링
Laravel은 특정 시간이나 규칙에 따라 작업 실행을 조정할 수 있는 작업 스케줄러도 제공합니다. Artisan 명령을 사용하여 작업 일정을 생성하고 관리할 수 있습니다.

  1. 작업 일정 파일 만들기
    다음 명령을 사용하여 새 작업 일정 파일을 만듭니다.

    php artisan make:console SendReport
    로그인 후 복사

    이렇게 하면 app/Console/Commands 디렉터리에 SendReport.php 작업 일정 파일이 생성됩니다.

  2. 작업 스케줄링 로직 작성
    작업 스케줄링 파일에서 작업 스케줄링의 구체적인 로직을 정의할 수 있습니다. 예를 들어 SendReport 작업 예약 파일에서 보고서를 생성하는 코드를 작성할 수 있습니다.

    <?php
    namespace AppConsoleCommands;
    use IlluminateConsoleCommand;
    class SendReport extends Command
    {
     protected $signature = 'report:send';
     protected $description = 'Send report';
     public function __construct()
     {
         parent::__construct();
     }
     public function handle()
     {
         // Generate and send report
     }
    }
    로그인 후 복사
  3. 작업 예약 전략 구성
    app/Console/Kernel.php 파일에서 작업 예약 전략을 구성할 수 있습니다. 예를 들어, 매일 아침 8시에 실행되도록 SendReport 작업을 예약하기 위해 스케줄 메소드에 다음 코드를 추가할 수 있습니다:

    protected function schedule(Schedule $schedule)
    {
     $schedule->command('report:send')->dailyAt('08:00');
    }
    로그인 후 복사
  4. 작업 스케줄러 시작
    작업 스케줄러를 시작하려면 다음 명령을 사용하세요:

    php artisan schedule:run
    로그인 후 복사

    이것은 작업 예약을 수행하기 위한 규칙 구성 예약 방법에서 수행한 작업을 따릅니다.

결론:
큐 처리 및 작업 예약에 Laravel을 사용하면 애플리케이션의 동시성을 효과적으로 향상시킬 수 있습니다. 시간이 많이 걸리는 작업을 처리를 위해 백그라운드로 연기함으로써 사용자 요청에 대한 대기 시간을 줄이고 사용자 경험을 향상시킬 수 있습니다. 대기열 처리 및 작업 예약 기능의 간단한 구성과 유연한 호출을 통해 이를 애플리케이션에 쉽게 통합할 수 있습니다.

이 기사가 Laravel의 대기열 처리 및 작업 스케줄링 기능을 이해하고 사용하는 데 도움이 되기를 바랍니다.

위 내용은 Laravel을 사용한 큐잉 및 작업 스케줄링: 애플리케이션 동시성 향상의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿