>  기사  >  PHP 프레임워크  >  Laravel 개발: Laravel 대기열 및 감독자를 사용하여 비동기 작업을 관리하는 방법은 무엇입니까?

Laravel 개발: Laravel 대기열 및 감독자를 사용하여 비동기 작업을 관리하는 방법은 무엇입니까?

王林
王林원래의
2023-06-13 16:04:16892검색

Laravel 개발: Laravel 대기열과 감독자를 사용하여 비동기 작업을 관리하는 방법은 무엇입니까?

현대 웹 애플리케이션에서 비동기 작업은 일상 업무의 필수적인 부분이 되었습니다. 비동기 작업은 애플리케이션 응답 시간을 개선하고 사용자 경험을 최적화하며 애플리케이션 확장성을 향상시킬 수 있습니다. Laravel 대기열은 비동기 작업 및 메시지 대기열을 처리하기 위해 Laravel 프레임워크에서 제공하는 강력한 도구입니다. 이 기사에서는 Laravel 대기열의 개념과 사용법을 소개하고 이를 Supervisor와 결합하여 비동기 작업을 관리합니다.

Laravel 대기열이란 무엇입니까?

Laravel 대기열은 비동기 작업 및 메시지 대기열을 처리하는 방법입니다. Laravel 대기열을 사용하면 웹 요청의 응답 시간에 영향을 주지 않고 시간이 많이 걸리는 작업을 대기열에 넣을 수 있습니다. 예를 들어 이메일 보내기, 비디오 처리 또는 PDF 생성은 모두 시간이 많이 걸리는 작업입니다. 대기열을 사용하여 이러한 작업을 백그라운드 처리에 배치하면 애플리케이션의 효율성과 응답성이 향상됩니다.

Laravel Queues는 일부 내장된 대기열 드라이버를 통해 Database, Redis, Beanstalkd 및 Amazon SQS와 같은 여러 백엔드 기술을 지원합니다. 이를 통해 개발자는 선호하는 대기열 기술을 사용하여 비동기 작업을 처리할 수 있습니다.

Laravel 대기열 사용

아래에서는 Laravel 대기열을 사용하여 비동기 작업을 처리하는 방법을 단계별로 소개합니다.

1단계: 대기열 드라이버 구성

Laravel 구성 파일에는 대기열과 대기열 드라이버를 구성하는 데 사용할 수 있는 queue.php라는 파일이 있습니다. 다음 명령을 사용하여 queue.php 파일을 생성할 수 있습니다:

php artisan queue:table
php artisan queue:failed-table
php artisan migrate

이렇게 하면 마이그레이션 파일과 대기열 테이블이 생성됩니다. 마이그레이션 명령을 실행하여 마이그레이션을 수행합니다.

queue.php 파일에는 여러 대기열 드라이버를 사용할 수 있는 옵션이 있습니다.

  • Database Driver - 작업을 데이터베이스에 저장하고 보급형 대기열 시스템으로 사용할 수 있습니다.
  • Redis 드라이버 - Redis의 내장 대기열 지원을 사용합니다.
  • Beanstalkd Driver - Beanstalkd 메시지 대기열 서비스를 사용합니다.
  • Amazon SQS 드라이버 - Amazon Simple Queue Service(SQS)를 사용합니다.

예를 들어 Redis 큐 드라이버를 사용하려면 queue.php 파일을 다음과 같이 구성하세요.

'default' => env('QUEUE_CONNECTION', 'redis'),
'connections' => [
    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],
]

2단계: 큐 작업 클래스 생성

다음으로 다음을 위한 큐 작업 클래스를 생성해야 합니다. 비동기 작업을 처리합니다. 이 클래스는 작업의 논리를 정의하는 간단한 PHP 클래스여야 합니다. 예를 들어, 다음 코드는 이메일 전송을 위한 비동기 작업 클래스입니다:

class SendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $email;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($email)
    {
        $this->email = $email;
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to($this->email)->send(new WelcomeEmail());
    }
}

이 클래스는 Laravel이 이 클래스를 비동기 작업 클래스로 변환하도록 지시하는 데 필요한 ShouldQueue 인터페이스를 구현합니다. handler() 메서드는 작업의 특정 논리를 정의하므로 비동기식으로 처리해야 하는 작업을 여기에서 수행할 수 있습니다.

3단계: 작업을 대기열에 푸시

이제 대기열 작업과 대기열 드라이버가 준비되었으므로 다음 단계는 작업을 대기열에 넣는 것입니다. 다음 코드를 사용하여 프로젝트 어디에서나 Eloquent 대기열을 호출할 수 있습니다:

use AppJobsSendEmail; 
use IlluminateSupportFacadesQueue;
...
Queue::push(new SendEmail('example@test.com'));

또는 다음과 같이 dispatch() 메서드를 사용하여 대기열에 작업을 넣을 수 있습니다:

SendEmail::dispatch('example@test.com');

4단계: 대기열 작업 실행

일단 작업을 대기열에 넣으면 작업이 대기열로 전달되어 실행을 기다립니다. 다음 코드를 사용하여 대기열을 실행할 수 있습니다.

php artisan queue:work

이 명령을 실행하면 리스너가 시작되고 대기열의 작업이 처리됩니다.

Supervisor를 사용하여 비동기 작업 관리

큐 작업은 백그라운드에서 실행되어야 하기 때문에 작업이 계속 실행될 수 있도록 서버에 프로세스 데몬을 설정해야 합니다. Supervisor는 백그라운드 프로세스가 비정상적으로 종료되지 않도록 하고 필요할 때 다시 시작하는 데 일반적으로 사용되는 프로세스 데몬입니다.

1단계: Supervisor 설치

Ubuntu 시스템에서는 다음 명령을 사용하여 Supervisor를 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install supervisor

2단계: Supervisor 구성 파일 생성

/etc/supervisor/conf.d 디렉터리에 생성 A myqueue.conf와 같은 구성 파일:

nano /etc/supervisor/conf.d/myqueue.conf

구성 파일에 다음을 추가하고 프로그램과 일치하도록 경로, 명령 및 사용자 이름을 변경하십시오.

[program:myqueue]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /path/to/artisan queue:work --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=username
numprocs=1
redirect_stderr=true
stdout_logfile=/path/to/storage/logs/myqueue.log

3단계: 감독자 다시 로드

변경 후 감독자의 구성 파일을 로드하려면 감독자에게 구성 파일을 다시 로드하도록 알려야 합니다. 다음 명령을 사용하여 감독자를 다시 로드합니다.

sudo supervisorctl reread

sudo supervisorctl update

sudo supervisorctl start all

4단계: 감독자 로그 보기

감독자의 로그 파일에서 비동기 작업의 출력 및 오류 정보를 볼 수 있습니다. 예를 들어, 구성 파일에 지정된 경로와 로그 파일 이름을 보면 Supervisor 로그를 볼 수 있습니다.

tail -f /path/to/storage/logs/myqueue.log

Conclusion

이 글에서는 Laravel 큐를 사용하는 방법과 Supervisor를 사용하여 비동기 작업을 관리하는 방법을 소개합니다. Laravel 큐를 사용하면 쉽게 줄일 수 있습니다. 시간이 많이 걸리는 작업 작업은 대기열에 추가되어 애플리케이션의 효율성과 반응성을 높여줍니다. Supervisor를 사용하면 백그라운드 작업이 계속 실행되고 필요할 때 자동으로 다시 시작될 수 있습니다. 이 글이 귀하의 발전에 도움이 되기를 바랍니다.

위 내용은 Laravel 개발: Laravel 대기열 및 감독자를 사용하여 비동기 작업을 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.