Redis Queue ใน Laravel: การจัดการการเข้าคิว

ใน Laravel เป็น Redis Queue เครื่องมืออันทรงพลังที่ใช้ในการจัดการงานที่ใช้เวลานานและใช้เวลานานโดยไม่ต้องรอให้เสร็จ เมื่อใช้ Redis Queue คุณสามารถจัดคิวงานต่างๆ เช่น การส่งอีเมล การประมวลผลงานพื้นหลัง หรือสร้างรายงาน และดำเนินการแบบอะซิงโครนัส ปรับปรุงประสิทธิภาพของแอปพลิเคชันและปรับปรุงประสบการณ์ผู้ใช้

ขั้นตอนพื้นฐานในการใช้ Redis Queue งาน Laravel

กำหนดค่า Redis

ก่อนอื่น คุณต้องติดตั้งและกำหนดค่า Redis ใน Laravel. ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Redis แพ็คเกจผ่าน Composer และกำหนด Redis ค่าพารามิเตอร์การเชื่อมต่อใน .env ไฟล์

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

กำหนดงาน

ถัดไป คุณต้องกำหนดงานที่คุณต้องการวางในคิว งานเหล่านี้จะดำเนินการแบบอะซิงโครนัสและเป็นอิสระจากการประมวลผลหลักของแอปพลิเคชัน

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

ใส่งานลงในคิว

เมื่อคุณต้องการทำงาน คุณเพียงแค่ใส่ลงในคิวโดยใช้ ฟังก์ชัน dispatch หรือ 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();  

ประมวลผลงานจากคิว

หลังจากใส่งานลงในคิวแล้ว คุณต้องตั้งค่า a Worker เพื่อเรียกใช้งานในคิว Laravel มาพร้อมกับการ artisan command เรียกใช้ worker:

php artisan queue:work

จะ worker ฟังและดำเนินงานในคิวอย่างต่อเนื่อง คุณสามารถกำหนดค่า worker เพื่อจัดการจำนวนงานและเวลารอระหว่างรอบการประมวลผล

จัดการงานในคิว

Laravel จัดเตรียมอินเทอร์เฟซการจัดการที่คุณสามารถตรวจสอบและควบคุมงานในคิวได้ คุณสามารถดูจำนวนงานที่ค้างอยู่ เวลาดำเนินการ และแม้กระทั่งลองงานที่ล้มเหลวอีกครั้ง

 

บทสรุป การใช้ Redis Queue in Laravel เป็นวิธีที่มีประสิทธิภาพในการจัดการงานที่ใช้เวลานานโดยไม่รบกวนการประมวลผลหลักของแอปพลิเคชัน เมื่อใช้ Redis Queue คุณสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันและปรับปรุงประสบการณ์ผู้ใช้