Redis Queue w Laravel: Obsługa kolejkowania

In Laravel, Redis Queue to potężne narzędzie służące do obsługi długotrwałych i czasochłonnych zadań bez czekania na ich zakończenie. Korzystając z Redis Queue, możesz kolejkować zadania, takie jak wysyłanie wiadomości e-mail, przetwarzanie zadań w tle lub generowanie raportów, i wykonywać je asynchronicznie, poprawiając wydajność aplikacji i poprawiając komfort użytkowania.

Podstawowe kroki do użycia Redis Queue w Laravel

Skonfiguruj Redis

Najpierw musisz zainstalować i skonfigurować Redis w Laravel. Upewnij się, że zainstalowałeś Redis pakiet przez Composer i skonfigurowałeś Redis parametry połączenia w .env pliku.

CACHE_DRIVER=redis  
REDIS_HOST=127.0.0.1  
REDIS_PASSWORD=null  
REDIS_PORT=6379  

Zdefiniuj zadania

Następnie musisz zdefiniować zadania, które chcesz umieścić w kolejce. Zadania te będą wykonywane asynchronicznie i niezależnie od głównego przetwarzania aplikacji.

// 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());  
    }  
}  

Umieść zadania w kolejce

Kiedy chcesz wykonać zadanie, po prostu umieszczasz je w kolejce za pomocą funkcji dispatch lub 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();  

Przetwarzaj zadania z kolejki

Po umieszczeniu zadania w kolejce należy skonfigurować program Worker do wykonywania zadań w kolejce. Laravel pochodzi z artisan command do uruchomienia worker:

php artisan queue:work

Będzie worker stale nasłuchiwać i wykonywać zadania w kolejce. Możesz skonfigurować worker obsługę liczby zadań i czasu oczekiwania między rundami przetwarzania.

Zarządzaj zadaniami w kolejce

Laravel zapewnia interfejs zarządzania, w którym można monitorować i kontrolować zadania w kolejce. Możesz wyświetlić liczbę oczekujących zadań, czas przetwarzania, a nawet ponowić nieudane zadania.

 

Podsumowanie Korzystanie Redis Queue z in Laravel to wydajny sposób obsługi długotrwałych zadań bez zakłócania głównego przetwarzania aplikacji. Korzystając z programu Redis Queue, możesz poprawić wydajność aplikacji i poprawić wrażenia użytkownika.