Yii ফ্রেমওয়ার্কে ক্রন জবস এবং ব্যাকগ্রাউন্ড প্রসেসিং সাধারণত দীর্ঘ-সময়ে চলা টাস্ক বা রুটিন কাজগুলি পরিচালনা করার জন্য ব্যবহার করা হয়, যেমন সিস্টেম মেইল পাঠানো, রিপোর্ট জেনারেশন, ডেটাবেস ব্যাকআপ, অথবা বড় ডেটা প্রসেসিং। Yii ফ্রেমওয়ার্কে ব্যাকগ্রাউন্ড টাস্ক পরিচালনা করা কিছুটা কনফিগারেশন এবং সরঞ্জামের মাধ্যমে সহজ হয়।
ক্রন জবস (Cron Jobs)
ক্রন জবস হল লিনাক্স/ইউনিক্স-ভিত্তিক অপারেটিং সিস্টেমে নির্দিষ্ট সময়সূচি অনুযায়ী একটি স্ক্রিপ্ট বা কমান্ড চালানোর প্রক্রিয়া। Yii-তে ক্রন জব ব্যবহার করে স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময় পর পর টাস্ক চালানো যায়।
Yii তে ক্রন জব কনফিগারেশন
Yii ফ্রেমওয়ার্কের মধ্যে ক্রন জব কনফিগারেশন করার জন্য, সাধারণত আপনাকে একটি কাস্টম কন্ট্রোলার তৈরি করতে হয় যা প্রক্রিয়াগুলি পরিচালনা করবে এবং তারপর সিস্টেমের ক্রন ট্যাব (crontab) ব্যবহার করে সেই কন্ট্রোলারটি নির্দিষ্ট সময়সূচি অনুযায়ী চালানো হবে।
কন্ট্রোলার তৈরি করা
প্রথমে, একটি কন্ট্রোলার তৈরি করুন যা আপনার ব্যাকগ্রাউন্ড কাজগুলি পরিচালনা করবে। যেমন:
namespace app\commands; use Yii; use yii\console\Controller; class CronController extends Controller { public function actionRunTask() { // এখানে আপনার ব্যাকগ্রাউন্ড টাস্ক কোড থাকবে echo "Cron job is running...\n"; } }এখানে,
actionRunTaskহলো সেই অ্যাকশন যা ক্রন জবের মাধ্যমে নিয়মিতভাবে চালানো হবে।ক্রন ট্যাব সেটআপ করা
এরপর, আপনাকে সিস্টেমের ক্রন ট্যাব কনফিগার করতে হবে, যাতে এটি নির্দিষ্ট সময়সূচি অনুযায়ী আপনার Yii অ্যাপ্লিকেশনের কনসোল অ্যাকশন চালায়। ক্রন ট্যাবের এন্ট্রি যেমন:
* * * * * /path/to/php /path/to/yii cron/run-taskএই কনফিগারেশনটি প্রতি মিনিটে
cron/run-taskঅ্যাকশন চালাবে।
ব্যাকগ্রাউন্ড প্রসেসিং
ব্যাকগ্রাউন্ড প্রসেসিং হলো এমন একটি প্রক্রিয়া যেখানে দীর্ঘ সময় ধরে চলা টাস্কগুলি ইউজারের রিকোয়েস্ট প্রসেসের বাইরে সম্পন্ন হয়। Yii তে ব্যাকগ্রাউন্ড প্রসেসিংয়ের জন্য বেশ কয়েকটি পদ্ধতি রয়েছে, যেমন Queue এবং Event Handling।
Yii Queue Extension
Yii তে ব্যাকগ্রাউন্ড টাস্ক সম্পন্ন করার জন্য সবচেয়ে জনপ্রিয় পদ্ধতি হলো Queue। Queue এর মাধ্যমে আপনি কাজগুলো কিউতে রাখেন এবং সেগুলো ব্যাকগ্রাউন্ডে প্রসেস হয়।
Queue Extension ইনস্টল করা
Yii তে Queue ব্যবহারের জন্য প্রথমে
yii2-queueএক্সটেনশন ইনস্টল করতে হবে:composer require yiisoft/yii2-queueQueue কনফিগারেশন
config/web.phpঅথবাconfig/console.phpফাইলে Queue কনফিগার করতে হবে:'components' => [ 'queue' => [ 'class' => \yii\queue\db\DbQueue::class, 'db' => 'db', // ডাটাবেস সংযোগ 'tableName' => 'queue', // টেবিলের নাম ], ],এখানে,
DbQueueব্যবহার করা হয়েছে যেটি ডাটাবেসকে Queue হিসেবে ব্যবহার করে। আপনি চাইলে Redis বা Beanstalkd ব্যবহারও করতে পারেন।ব্যাকগ্রাউন্ড টাস্ক তৈরি করা
এখন, আপনি একটি ব্যাকগ্রাউন্ড টাস্ক তৈরি করতে পারেন। উদাহরণস্বরূপ:
namespace app\commands; use Yii; use yii\console\Controller; use yii\queue\JobInterface; class QueueController extends Controller { public function actionRunBackgroundTask() { Yii::$app->queue->push(new \app\jobs\BackgroundTask()); echo "Task has been pushed to the queue.\n"; } }এখানে,
BackgroundTaskএকটি কাস্টম ক্লাস হতে হবে যাJobInterfaceইমপ্লিমেন্ট করবে।Queue Worker চালানো
কিউতে রাখা কাজগুলো প্রসেস করতে একটি Queue Worker চালানো প্রয়োজন। এটি কনসোল কমান্ডের মাধ্যমে করা হয়:
php yii queue/listenএটি কিউ থেকে কাজ বের করে ব্যাকগ্রাউন্ডে প্রসেস করবে।
ব্যাকগ্রাউন্ড টাস্কের উদাহরণ
namespace app\jobs;
use Yii;
use yii\base\BaseObject;
use yii\queue\JobInterface;
class BackgroundTask extends BaseObject implements JobInterface
{
public function execute($queue)
{
// আপনার ব্যাকগ্রাউন্ড টাস্কের কোড এখানে
Yii::info('Executing background task...');
// যেমন দীর্ঘ প্রসেসিং কাজ
sleep(10);
Yii::info('Background task completed.');
}
}
এখানে, BackgroundTask ক্লাসটি JobInterface ইমপ্লিমেন্ট করে এবং execute() মেথডে আপনার ব্যাকগ্রাউন্ড কাজ সম্পন্ন হবে।
ব্যাকগ্রাউন্ড প্রসেসিং এর অন্যান্য পদ্ধতি
- Event Handling: Yii তে বিভিন্ন ইভেন্টের মাধ্যমে ব্যাকগ্রাউন্ড কাজ পরিচালনা করা যায়। যেমন, একটি ইভেন্ট ট্রিগার হলে তা একটি কাস্টম একশন বা ব্যাকগ্রাউন্ড টাস্কে রূপান্তরিত হতে পারে।
- External Tools: Yii ফ্রেমওয়ার্কের বাইরে আপনি Supervisor, Gearman, RabbitMQ ইত্যাদি টুল ব্যবহার করতে পারেন যা ব্যাকগ্রাউন্ড প্রসেসিংয়ের কাজকে আরও শক্তিশালী এবং স্কেলেবেল করে তোলে।
সারাংশ
Yii ফ্রেমওয়ার্কে ক্রন জবস এবং ব্যাকগ্রাউন্ড প্রসেসিং ব্যবস্থাপনা স্বয়ংক্রিয় এবং দীর্ঘ-সময়ে চলা টাস্কগুলিকে কার্যকরভাবে পরিচালনা করতে সহায়ক। ক্রন জব ব্যবহার করে নির্দিষ্ট সময়সূচিতে টাস্ক চালানো যায়, আর Queue এক্সটেনশনের মাধ্যমে ব্যাকগ্রাউন্ড টাস্ক বাস্তবায়ন করা সম্ভব। Yii-তে ব্যাকগ্রাউন্ড টাস্ক এবং ক্রন জব কনফিগারেশন সহজ এবং শক্তিশালী, যা অ্যাপ্লিকেশনকে স্কেল এবং পারফরম্যান্স উন্নত করতে সহায়তা করে।