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.