에서 는 Laravel 완료 Redis Queue 를 기다리지 않고 오래 실행되고 시간이 많이 걸리는 작업을 처리하는 데 사용되는 강력한 도구입니다. 를 사용하여 Redis Queue 이메일 보내기, 백그라운드 작업 처리 또는 보고서 생성과 같은 작업을 대기열에 추가하고 비동기식으로 실행하여 애플리케이션 성능을 개선하고 사용자 경험을 향상할 수 있습니다.
Redis Queue 에서 사용할 기본 단계 Laravel
구성 Redis
Redis 먼저 에서 설치 및 구성해야 합니다 Laravel. Redis Composer를 통해 패키지를 설치하고 파일 Redis 에서 연결 매개변수를 구성했는지 확인하십시오 .env
.
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
작업 정의
다음으로 대기열에 넣을 작업을 정의해야 합니다. 이러한 작업은 애플리케이션의 기본 처리와 독립적으로 비동기식으로 수행됩니다.
// Example defining a job to send an email
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
class SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $user;
public function __construct($user)
{
$this->user = $user;
}
public function handle()
{
// Handle sending an email to the user
Mail::to($this->user->email)->send(new WelcomeEmail());
}
}
대기열에 작업 넣기
작업을 수행하려면 다음과 같이 dispatch
또는 dispatchNow
함수를 사용하여 작업을 대기열에 넣기만 하면 됩니다.
use App\Jobs\SendEmailJob;
use Illuminate\Support\Facades\Queue;
// Put the job into the queue and perform asynchronously
Queue::push(new SendEmailJob($user));
// Put the job into the queue and perform synchronously(without waiting)
Queue::push(new SendEmailJob($user))->dispatchNow();
대기열에서 작업 처리
작업을 대기열에 넣은 후 Worker 대기열에 있는 작업을 실행하도록 설정해야 합니다. 다음을 실행하는 Laravel 와 함께 제공됩니다. artisan command worker
php artisan queue:work
는 worker 대기열의 작업을 지속적으로 수신하고 실행합니다. worker 작업 수와 처리 라운드 사이의 대기 시간을 처리하도록 를 구성할 수 있습니다 .
대기열에서 작업 관리
Laravel 대기열의 작업을 모니터링하고 제어할 수 있는 관리 인터페이스를 제공합니다. 보류 중인 작업 수, 처리 시간을 볼 수 있으며 실패한 작업을 다시 시도할 수도 있습니다.
결론 Redis Queue in을 사용하는 Laravel 것은 애플리케이션의 주요 처리를 중단하지 않고 장기 실행 작업을 처리하는 효율적인 방법입니다. 를 사용하여 Redis Queue 애플리케이션 성능을 개선하고 사용자 경험을 향상시킬 수 있습니다.