Redis Queue in Laravel: Eilių tvarkymas

„In“ Laravel yra Redis Queue galingas įrankis, naudojamas ilgai trunkančioms ir daug laiko reikalaujančioms užduotims atlikti nelaukiant, kol jos bus baigtos. Naudodami Redis Queue galite į eilę užduotis, pvz., el. laiškų siuntimą, foninių užduočių apdorojimą arba ataskaitų generavimą, ir vykdyti jas asinchroniškai, pagerindami programos našumą ir pagerindami naudotojo patirtį.

Pagrindiniai naudojimo Redis Queue žingsniai Laravel

Konfigūruoti Redis

Pirmiausia turite įdiegti ir Redis sukonfigūruoti Laravel. Įsitikinkite, kad įdiegėte Redis paketą per Composer ir sukonfigūravote Redis ryšio parametrus faile .env.

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

Apibrėžkite darbus

Tada turite apibrėžti darbus, kuriuos norite įtraukti į eilę. Šie darbai bus atliekami asinchroniškai ir nepriklausomai nuo pagrindinio paraiškos apdorojimo.

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

Įdėkite darbus į eilę

Kai norite atlikti darbą, tiesiog įtraukite jį į eilę naudodami dispatch arba dispatchNow funkcijas:

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

Apdorokite darbus iš eilės

Kai darbas įtrauktas į eilę, turite nustatyti a, Worker kad būtų vykdomos eilėje esančios užduotys. Laravel ateina su artisan command paleisti worker:

php artisan queue:work

Jis worker nuolat klausys ir vykdys eilėje esančius darbus. Galite sukonfigūruoti worker tvarkyti užduočių skaičių ir laukimo laiką tarp apdorojimo raundų.

Tvarkykite eilėje esančius darbus

Laravel suteikia valdymo sąsają, kurioje galite stebėti ir valdyti eilėje esančius darbus. Galite peržiūrėti laukiančių užduočių skaičių, apdorojimo laiką ir net bandyti iš naujo atlikti nepavykusias užduotis.

 

Išvada Naudojimas yra veiksmingas būdas atlikti ilgai trunkančias užduotis Redis Queue, Laravel netrikdant pagrindinio programos apdorojimo. Naudodami Redis Queue galite pagerinti programos našumą ir pagerinti vartotojo patirtį.