Redis Queue في Laravel: معالجة قوائم الانتظار

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

مهام المعالجة من قائمة الانتظار

بعد وضع المهمة في قائمة الانتظار ، تحتاج إلى إعداد Worker لتنفيذ المهام في قائمة الانتظار. Laravel يأتي مع artisan command تشغيل worker:

php artisan queue:work

سيستمع الشخص worker باستمرار وينفذ الوظائف الموجودة في قائمة الانتظار. يمكنك تكوين worker للتعامل مع عدد الوظائف ووقت الانتظار بين جولات المعالجة.

إدارة الوظائف في قائمة الانتظار

Laravel يوفر واجهة إدارة حيث يمكنك مراقبة المهام في قائمة الانتظار والتحكم فيها. يمكنك عرض عدد المهام المعلقة ووقت المعالجة وحتى إعادة محاولة المهام الفاشلة.

 

الاستنتاج يعد استخدام Redis Queue in Laravel طريقة فعالة للتعامل مع المهام طويلة الأمد دون تعطيل المعالجة الرئيسية للتطبيق. باستخدام Redis Queue ، يمكنك تحسين أداء التطبيق وتحسين تجربة المستخدم.