Redis Queue në Laravel: Trajtimi i radhës

In Laravel, Redis Queue është një mjet i fuqishëm që përdoret për të trajtuar detyrat e gjata dhe që kërkojnë kohë pa pritur përfundimin e tyre. Duke përdorur Redis Queue, ju mund të vendosni detyra të tilla si dërgimi i emaileve, përpunimi i detyrave në sfond ose gjenerimi i raporteve dhe t'i ekzekutoni ato në mënyrë asinkrone, duke përmirësuar performancën e aplikacionit dhe duke përmirësuar përvojën e përdoruesit.

Hapat bazë për t'u përdorur Redis Queue në Laravel

Konfiguro Redis

Së pari, duhet të instaloni dhe konfiguroni Redis në Laravel. Sigurohuni që të keni instaluar Redis paketën nëpërmjet Composer dhe të keni konfiguruar Redis parametrat e lidhjes në .env skedar.

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

Përcaktoni punët

Më pas, duhet të përcaktoni punët që dëshironi të vendosni në radhë. Këto punë do të kryhen në mënyrë asinkrone dhe të pavarur nga përpunimi kryesor i aplikacionit.

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

Vendos Jobs në radhë

Kur dëshironi të kryeni një punë, thjesht e vendosni atë në radhë duke përdorur funksionet dispatch ose 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();  

Përpunoni punë nga radha

Pasi puna të jetë vendosur në radhë, ju duhet të vendosni një Worker për të ekzekutuar punët në radhë. Laravel vjen me një artisan command për të drejtuar worker:

php artisan queue:work

Do worker të dëgjojë dhe ekzekutojë vazhdimisht punët në radhë. Mund ta konfiguroni worker për të trajtuar numrin e punëve dhe kohën e pritjes ndërmjet raundeve të përpunimit.

Menaxho punët në radhë

Laravel ofron një ndërfaqe menaxhimi ku mund të monitoroni dhe kontrolloni punët në radhë. Mund të shikoni numrin e punëve në pritje, kohën e përpunimit dhe madje të riprovoni punët e dështuara.

 

Përfundim Përdorimi Redis Queue në Laravel është një mënyrë efikase për të trajtuar detyrat e gjata pa ndërprerë përpunimin kryesor të aplikacionit. Duke përdorur Redis Queue, ju mund të përmirësoni performancën e aplikacionit dhe të përmirësoni përvojën e përdoruesit.