ใน 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 คุณสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันและปรับปรุงประสบการณ์ผู้ใช้