Redis Queue v Laravel: Ravnanje s čakalno vrsto

V je zmogljivo orodje, ki se uporablja za reševanje dolgotrajnih in dolgotrajnih nalog, ne da bi čakali na njihovo dokončanje Laravel. Redis Queue Z uporabo Redis Queue lahko v čakalno vrsto postavite naloge, kot so pošiljanje e-pošte, obdelava opravil v ozadju ali ustvarjanje poročil, in jih izvajate asinhrono, s čimer izboljšate delovanje aplikacije in izboljšate uporabniško izkušnjo.

Osnovni koraki za uporabo Redis Queue v Laravel

Konfiguriraj Redis

Najprej morate namestiti in konfigurirati Redis v Laravel. Prepričajte se, da ste paket namestili Redis prek Composerja in konfigurirali Redis parametre povezave v .env datoteki.

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

Določite delovna mesta

Nato morate določiti opravila, ki jih želite dati v čakalno vrsto. Ta opravila se bodo izvajala asinhrono in neodvisno od glavne obdelave aplikacije.

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

Postavite opravila v čakalno vrsto

Ko želite opraviti opravilo, ga preprosto postavite v čakalno vrsto s funkcijami dispatch ali 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();  

Obdelajte opravila iz čakalne vrste

Ko je opravilo postavljeno v čakalno vrsto, morate nastaviti Worker za izvajanje opravil v čakalni vrsti. Laravel prihaja z artisan command za zagon worker:

php artisan queue:work

Nenehno bo worker poslušal in izvajal opravila v čakalni vrsti. Konfigurirate lahko tako, worker da obravnava število opravil in čakalni čas med krogi obdelave.

Upravljajte opravila v čakalni vrsti

Laravel ponuja vmesnik za upravljanje, kjer lahko spremljate in nadzirate opravila v čakalni vrsti. Ogledate si lahko število čakajočih opravil, čas obdelave in celo znova poskusite neuspela opravila.

 

Zaključek Uporaba Redis Queue in Laravel je učinkovit način za reševanje dolgotrajnih nalog, ne da bi motili glavno obdelavo aplikacije. Z uporabo Redis Queue lahko izboljšate delovanje aplikacije in izboljšate uporabniško izkušnjo.