FuelPHP একটি শক্তিশালী এবং নমনীয় PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) ডিজাইন প্যাটার্ন অনুসরণ করে। FuelPHP এর মধ্যে Task Class একটি গুরুত্বপূর্ণ ফিচার, যা ব্যাকগ্রাউন্ড কাজ এবং টাস্ক পরিচালনার জন্য ব্যবহৃত হয়। সাধারণত Task Class ব্যবহার করে আপনি ব্যাচ প্রসেসিং, ক্রন জব বা অটোমেটেড কাজ সম্পাদন করতে পারেন যা ব্যবহারকারী ইন্টারঅ্যাকশন ছাড়াও চলতে থাকে।
এই গাইডে FuelPHP এর Task Class ব্যবহার করার পদ্ধতি আলোচনা করা হবে, যাতে আপনি ব্যাকগ্রাউন্ড টাস্কগুলোকে সহজভাবে পরিচালনা করতে পারেন।
1. FuelPHP তে Task Class ব্যবহার:
FuelPHP তে Task Class এর মাধ্যমে আপনি ব্যাকগ্রাউন্ড টাস্ক বা ক্রন জব পরিচালনা করতে পারেন। এটি এক ধরনের CLI (Command Line Interface) অ্যাপ্লিকেশন, যা সাধারণত লং-রানিং বা নিয়মিত কাজ সম্পাদন করতে ব্যবহৃত হয়।
Task Class তৈরি করা:
FuelPHP তে Task তৈরি করার জন্য আপনাকে fuel/app/tasks/ ডিরেক্টরিতে একটি PHP ক্লাস তৈরি করতে হবে। প্রতিটি Task ক্লাসে run মেথড থাকতে হবে যা টাস্কের কার্যকরী অংশ হবে।
উদাহরণ: Task Class তৈরি করা:
ফাইল: fuel/app/tasks/clean.php
namespace Fuel\Tasks;
class Clean
{
// টাস্কের মূল কাজ যেখানে কাজটি এক্সিকিউট করা হবে
public static function run()
{
// এখানে আপনি আপনার ব্যাকগ্রাউন্ড কাজ লিখবেন
\Log::info('Running cleanup task...');
// উদাহরণ হিসেবে, পুরানো ফাইল ডিলিট করা
$files = glob(DOCROOT.'uploads/*.old'); // `.old` এক্সটেনশনসহ সমস্ত ফাইল খুঁজুন
foreach ($files as $file) {
unlink($file); // পুরানো ফাইলগুলি ডিলিট করুন
\Log::info('Deleted: ' . $file);
}
\Log::info('Cleanup task finished.');
}
}
এখানে, run() মেথডে ফাইল ক্লিনআপের কাজ করা হয়েছে। এটি .old এক্সটেনশনের সাথে সমস্ত ফাইল ডিলিট করবে। আপনি এখানে আপনার প্রয়োজন অনুযায়ী যেকোনো ব্যাকগ্রাউন্ড কাজ করতে পারেন।
2. Task Class রান করা:
FuelPHP তে CLI কমান্ডের মাধ্যমে Task Class রান করা যায়। আপনি php oil কমান্ড ব্যবহার করে টাস্ক চালাতে পারবেন।
Task রান করার উদাহরণ:
CLI থেকে টাস্ক রান করার জন্য নিচের কমান্ডটি ব্যবহার করুন:
php oil r clean
এখানে:
oil rকমান্ডের মাধ্যমে FuelPHP তে run (রান) কমান্ড কার্যকরী হবে।cleanহল আমাদের টাস্কের নাম, যেটিfuel/app/tasks/clean.phpফাইলে তৈরি করা হয়েছিল।
আপনি যদি একটি Task ক্লাসের বিভিন্ন মেথডও রান করতে চান, তবে সেগুলির নামের পরে সেই মেথডের নামও দিতে পারেন:
php oil r clean another_method
এখানে, another_method একটি অতিরিক্ত মেথড, যা Clean ক্লাসে থাকতে হবে।
3. Task Class এ প্যারামিটার ব্যবহার:
এটি সম্ভব যে আপনি আপনার Task ক্লাসে প্যারামিটার পাস করবেন, যা রান করার সময় প্রয়োজনীয় ডেটা প্রদান করবে।
Task ক্লাসে প্যারামিটার সহ রান করা:
clean.php টাস্ক ক্লাসে প্যারামিটার পাস করা যাবে:
namespace Fuel\Tasks;
class Clean
{
public static function run($file_extension = 'old')
{
\Log::info('Running cleanup task with extension: ' . $file_extension);
// প্যারামিটার ব্যবহার করে ফাইল ক্লিনআপ করা
$files = glob(DOCROOT.'uploads/*.' . $file_extension);
foreach ($files as $file) {
unlink($file); // পুরানো ফাইলগুলি ডিলিট করুন
\Log::info('Deleted: ' . $file);
}
\Log::info('Cleanup task finished.');
}
}
এখানে $file_extension প্যারামিটারটি ডিফল্টভাবে 'old' রাখা হয়েছে। তবে যখন আপনি এই টাস্ক রান করবেন, তখন আপনি এটি পরিবর্তন করতে পারবেন।
প্যারামিটারসহ Task রান করা:
php oil r clean txt
এখানে txt প্যারামিটারটি পাস করা হয়েছে, যা ফাইল এক্সটেনশন হিসাবে ব্যবহৃত হবে। এই কমান্ডটি শুধুমাত্র .txt এক্সটেনশনের ফাইলগুলো ডিলিট করবে।
4. Task Scheduling (ক্রন জব):
FuelPHP এর Task Class ব্যবহার করে আপনি ক্রন জব সেট করতে পারেন, যেখানে টাস্ক নির্দিষ্ট সময় পরপর রান হবে। FuelPHP তে Task Scheduling সাধারণত Cron jobs এর মাধ্যমে করা হয়। আপনি ক্রন জব সেট করে Task Class নির্দিষ্ট সময় পরপর রান করাতে পারেন।
Cron Job সেট করা:
এটি আপনার সিস্টেমের crontab ফাইলে যোগ করা যাবে। নিচে একটি উদাহরণ দেওয়া হলো যা প্রতি ১ ঘণ্টায় Clean টাস্কটি রান করবে:
0 * * * * /usr/bin/php /path/to/your/project/public/index.php oil r clean
এখানে:
0 * * * *এটি ক্রন শিডিউল যা প্রতি ঘণ্টায় রান করবে।/usr/bin/phpহল PHP রানটাইম, এবং/path/to/your/project/public/index.phpহল FuelPHP অ্যাপ্লিকেশনের রুট পাথ।oil r cleanহল কমান্ডটি যা প্রতি ঘণ্টায় Clean টাস্কটি চালাবে।
5. Task Logging (টাস্ক লগিং):
FuelPHP তে আপনি টাস্কের কার্যক্রম লগ করতে পারেন, যাতে পরবর্তীতে টাস্কটি কতটা সফল বা ব্যর্থ হয়েছে তা ট্র্যাক করা যায়।
টাস্ক লগিং উদাহরণ:
namespace Fuel\Tasks;
class Clean
{
public static function run()
{
\Log::info('Running cleanup task...');
// ফাইল ডিলিট করার কাজ
$files = glob(DOCROOT.'uploads/*.old');
foreach ($files as $file) {
if (unlink($file)) {
\Log::info('Deleted: ' . $file);
} else {
\Log::error('Failed to delete: ' . $file);
}
}
\Log::info('Cleanup task finished.');
}
}
এখানে, \Log::info() এবং \Log::error() ব্যবহার করে সফল এবং ব্যর্থ ফাইল অপারেশনের লগ তৈরি করা হয়েছে। আপনি fuel/app/logs/ ডিরেক্টরিতে এই লগ ফাইলগুলো দেখতে পারবেন।
FuelPHP এর Task Class হল একটি অত্যন্ত শক্তিশালী টুল যা ব্যাকগ্রাউন্ড কাজ এবং ক্রন জব পরিচালনা করতে ব্যবহৃত হয়। এটি আপনাকে বিভিন্ন ধরনের অ্যাসিঙ্ক্রোনাস এবং লং-রানিং প্রসেস যেমন ডেটা ক্লিনআপ, ব্যাচ প্রসেসিং, এবং সিস্টেম মেইন্টেনেন্স কাজ পরিচালনা করার সুযোগ দেয়। Task Scheduling, Task Logging, এবং Parameterization এর মাধ্যমে FuelPHP তে Task Class ব্যবহারের মাধ্যমে আপনি ওয়েব অ্যাপ্লিকেশনকে আরও ফ্লেক্সিবল এবং স্কেলেবল করতে পারেন।
Read more