19 June, 2025
Laravel Queue নিয়ে একটি পূর্ণাঙ্গ গাইড
কোনো ওয়েব অ্যাপ্লিকেশনে সময়সাপেক্ষ কাজগুলো দ্রুত ও কার্যকরীভাবে সম্পন্ন করার জন্য Queue একটি অপরিহার্য অংশ। Laravel, যা একটি শক্তিশালী PHP ফ্রেমওয়ার্ক, এতে বিল্ট-ইন Queue সিস্টেম রয়েছে যা এধরনের কাজ সহজেই পরিচালনা করতে সাহায্য করে। এই ব্লগে আমরা Laravel Queue সম্পর্কে বিস্তারিত আলোচনা করব, এর সেটআপ, ব্যবহার এবং বাস্তব প্রয়োগ নিয়ে।
Laravel Queue কী?
Laravel Queue একটি সিস্টেম যা দীর্ঘ সময়সাপেক্ষ কাজগুলোকে পরে সম্পন্ন করার জন্য সংরক্ষণ করে। এটি আপনার অ্যাপ্লিকেশনের প্রধান কার্যক্রমগুলোকে দ্রুত সম্পন্ন করার সুযোগ দেয় এবং ব্যাকগ্রাউন্ডে নির্ধারিত কাজগুলো চালিয়ে যেতে পারে।
Queue এর ব্যবহার:
ইমেইল পাঠানো
ফাইল প্রসেসিং (যেমন: ইমেজ বা ভিডিও)
রিপোর্ট তৈরি
API ডেটা সিঙ্ক্রোনাইজেশন
নোটিফিকেশন বা SMS পাঠানো
Laravel Queue কিভাবে কাজ করে
Laravel Queue আপনাকে কাজগুলো জব হিসেবে সংজ্ঞায়িত করতে এবং সেগুলো Queue তে পাঠানোর সুবিধা দেয়। Queue সিস্টেম বিভিন্ন ড্রাইভার সমর্থন করে, যেমন:
ডাটাবেজ: Queue সংরক্ষণে ডাটাবেজ ব্যবহার করা হয়।
রেডিস (Redis): দ্রুত ইন-মেমরি ডাটা স্টোর।
বিনস্টকড (Beanstalkd): একটি সরল ও দ্রুত ওয়ার্ক কিউ।
অ্যামাজন SQS: একটি ব্যবস্থাপিত মেসেজ কিউ সার্ভিস।
সিঙ্ক (Sync): কাজগুলো তাৎক্ষণিকভাবে সম্পন্ন করে (স্থানীয় পরীক্ষার জন্য উপযুক্ত)।
Laravel Queue সেটআপ
ধাপ ১: Laravel ইনস্টল করুন
Laravel এর একটি নতুন প্রোজেক্ট তৈরি করুন:
bash
CopyEdit
composer create-project laravel/laravel laravel-queue-example
ধাপ ২: Queue ড্রাইভার কনফিগার করুন
.env ফাইল থেকে QUEUE_CONNECTION ভ্যারিয়েবলটি ড্রাইভারের জন্য সেট করুন। উদাহরণস্বরূপ, ডাটাবেজ ড্রাইভারের জন্য:
env
CopyEdit
QUEUE_CONNECTION=database
ধাপ ৩: Queue টেবিল তৈরি করুন (ডাটাবেজ ড্রাইভার)
Queue টেবিল তৈরি করতে Artisan কমান্ড ব্যবহার করুন:
bash
CopyEdit
php artisan queue:table
php artisan migrate
ধাপ ৪: একটি জব ক্লাস তৈরি করুন
একটি নতুন জব তৈরি করতে Artisan কমান্ড ব্যবহার করুন:
bash
CopyEdit
php artisan make:job ProcessEmail
উদাহরণ: Queue দিয়ে ইমেইল পাঠানো
ধাপ ১: জব তৈরি করুন
ProcessEmail জব ক্লাসে কোড লিখুন:
php
CopyEdit
namespace App\Jobs;
use Mail;
use App\Mail\NotificationEmail;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class ProcessEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $email;
public function __construct($email)
{
$this->email = $email;
}
public function handle()
{
Mail::to($this->email)->send(new NotificationEmail());
}
}
ধাপ ২: জব ডিসপ্যাচ করুন
কন্ট্রোলার থেকে জব ডিসপ্যাচ করুন:
php
CopyEdit
use App\Jobs\ProcessEmail;
public function sendNotification(Request $request)
{
$email = $request->input('email');
ProcessEmail::dispatch($email);
return response()->json(['message' => 'ইমেইল Queue এ পাঠানো হয়েছে!']);
}
Queue প্রসেসিং
Queue প্রসেস করতে নিচের কমান্ড চালান:
bash
CopyEdit
php artisan queue:work
Laravel Queue এর উন্নত ফিচার
১. ডিলে করা জব
Queue এর জব নির্ধারিত সময় পরে প্রসেস করতে পারেন:
php
CopyEdit
ProcessEmail::dispatch($email)->delay(now()->addMinutes(10));
২. জব প্রায়োরিটি নির্ধারণ
Queue তে বিভিন্ন প্রায়োরিটি সেট করতে পারেন:
bash
CopyEdit
php artisan queue:work --queue=high,default
৩. ফেইলড জব
ফেইলড জবগুলো failed_jobs টেবিলে সংরক্ষিত হয়। এটি তৈরি করতে:
bash
CopyEdit
php artisan queue:failed-table
php artisan migrate
ফেইলড জব পুনরায় চেষ্টা করতে:
bash
CopyEdit
php artisan queue:retry all
বাস্তব প্রয়োগ: ইমেজ প্রসেসিং
আপনার অ্যাপ্লিকেশনে ইমেজ রিসাইজ বা ওয়াটারমার্ক করার জন্য Queue ব্যবহার করতে পারেন। উদাহরণ:
php
CopyEdit
namespace App\Jobs;
use Intervention\Image\ImageManagerStatic as Image;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class ProcessImage implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $imagePath;
public function __construct($imagePath)
{
$this->imagePath = $imagePath;
}
public function handle()
{
$image = Image::make($this->imagePath);
$image->resize(800, 600);
$image->insert('public/watermark.png');
$image->save($this->imagePath);
}
}
উপসংহার
Laravel Queue আপনার অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ড টাস্ক পরিচালনার জন্য একটি শক্তিশালী এবং কার্যকরী সমাধান। এটি ব্যবহার করে আপনি ইমেইল পাঠানো, ইমেজ প্রসেসিং বা API সিঙ্ক্রোনাইজেশনের মতো কাজগুলো সহজেই সম্পন্ন করতে পারেন। Laravel Queue ব্যবহার করে আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করুন।