Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন এবং ক্রন জবস ডেভেলপারদের জন্য বিভিন্ন ব্যাকগ্রাউন্ড টাস্ক, স্ক্রিপ্ট বা স্বয়ংক্রিয় কাজ চালানোর সুবিধা প্রদান করে। কনসোল অ্যাপ্লিকেশনটি মূলত কমান্ড লাইন থেকে চালানো যায় এবং এটি সিস্টেম বা সার্ভার সম্পর্কিত কাজগুলো স্বয়ংক্রিয়ভাবে সম্পাদন করতে সাহায্য করে। ক্রন জবস হল একটি লিনাক্স/ইউনিক্স টাইপ সিস্টেমের টাস্ক সিডিউলিং মেকানিজম যা নির্দিষ্ট সময়ে নির্দিষ্ট কাজ বা স্ক্রিপ্ট চালায়।
কনসোল অ্যাপ্লিকেশন কী?
কনসোল অ্যাপ্লিকেশন হল এমন একটি প্রোগ্রাম যা কমান্ড লাইন বা টার্মিনাল থেকে চালানো হয়। Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন সাধারণত ব্যাকগ্রাউন্ড টাস্ক (যেমন ডেটাবেস মাইগ্রেশন, স্ক্রিপ্ট রান, ডেটা এক্সপোর্ট) সম্পাদন করার জন্য ব্যবহৃত হয়।
Yii কনসোল অ্যাপ্লিকেশন তৈরি করা খুবই সহজ। আপনি শুধু কনসোল অ্যাপ্লিকেশন তৈরি করার জন্য একটি কনসোল কন্ট্রোলার তৈরি করেন এবং সেটি কমান্ড লাইন থেকে চালিয়ে বিভিন্ন কাজ সম্পন্ন করেন।
কনসোল অ্যাপ্লিকেশন তৈরি করা
Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন তৈরির জন্য Yii2 Console Application Template ব্যবহার করা হয়।
১. কনসোল কন্ট্রোলার তৈরি করা
Yii কনসোল অ্যাপ্লিকেশন তৈরি করতে, প্রথমে একটি কনসোল কন্ট্রোলার তৈরি করতে হয়। আপনি কমান্ড লাইন থেকে নিচের কোড ব্যবহার করে কনসোল কন্ট্রোলার তৈরি করতে পারেন:
php yii gii/controller --controllerClass=app\\commands\\HelloController
এটি একটি HelloController কন্ট্রোলার তৈরি করবে যা commands নামক ফোল্ডারে থাকবে।
২. কনসোল কন্ট্রোলার কোড লেখা
কনসোল কন্ট্রোলারে আপনি বিভিন্ন কমান্ড মেথড লিখতে পারেন। উদাহরণস্বরূপ, একটি actionSayHello মেথড:
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloController extends Controller
{
public function actionSayHello()
{
echo "Hello, Yii Console Application!\n";
}
}
এই কন্ট্রোলারের actionSayHello মেথডটি কমান্ড লাইন থেকে চালানোর জন্য প্রস্তুত।
৩. কনসোল অ্যাপ্লিকেশন চালানো
আপনি এই কনসোল অ্যাপ্লিকেশনটি চালাতে চাইলে নিচের কমান্ড ব্যবহার করবেন:
php yii hello/say-hello
এটি কমান্ড লাইন থেকে "Hello, Yii Console Application!" মেসেজটি প্রদর্শন করবে।
Yii কনসোল অ্যাপ্লিকেশন ব্যবহারের অন্যান্য উদাহরণ
Yii কনসোল অ্যাপ্লিকেশন থেকে আপনি বিভিন্ন কাজ সম্পন্ন করতে পারেন, যেমন:
- ডেটাবেস মাইগ্রেশন: ডেটাবেস কাঠামো পরিবর্তন করার জন্য মাইগ্রেশন স্ক্রিপ্ট চালানো।
- ডেটাবেস ডাম্প বা ব্যাকআপ: ডেটাবেস ব্যাকআপ নিয়ে সংরক্ষণ করা।
- এমেইল বা রিপোর্ট জেনারেশন: নির্দিষ্ট সময় অনুযায়ী রিপোর্ট বা ইমেইল পাঠানো।
- ব্যাকগ্রাউন্ড টাস্ক: কিছু ব্যাকগ্রাউন্ড অপারেশন বা স্ক্রিপ্ট চালানো।
ক্রন জবস (Cron Jobs)
ক্রন জবস হল একটি লিনাক্স/ইউনিক্স সিস্টেমে ব্যবহার করা হয় এমন টুল যা নির্দিষ্ট সময়ে বা নির্দিষ্ট সময়ের ব্যবধানে কিছু নির্দিষ্ট কাজ বা স্ক্রিপ্ট চালায়। Yii কনসোল অ্যাপ্লিকেশনকে ক্রন জব হিসেবে সেটআপ করে আপনি স্বয়ংক্রিয়ভাবে নিয়মিত কাজ করতে পারেন, যেমন ডেটাবেস ব্যাকআপ নেওয়া, রিপোর্ট জেনারেট করা, সিস্টেম মেইনটেন্যান্স ইত্যাদি।
ক্রন জব কীভাবে কাজ করে?
ক্রন জব চালানোর জন্য একটি ক্রন টেবিল (cron table বা crontab) কনফিগার করতে হয়, যেখানে আপনি নির্দিষ্ট সময় অনুযায়ী কাজের সময়সূচী সেট করতে পারেন।
ক্রন জব কনফিগার করা
ক্রন টেবিল এডিট করা:
প্রথমে, আপনার সিস্টেমের ক্রন টেবিল এডিট করতে হবে:
crontab -eক্রন জব এন্ট্রি করা:
ক্রন টেবিলে একটি এন্ট্রি যুক্ত করতে পারেন যা Yii কনসোল অ্যাপ্লিকেশন চালাবে। উদাহরণস্বরূপ, যদি আপনি একটি কনসোল অ্যাপ্লিকেশন
backup/databaseচালাতে চান প্রতিদিন রাত ৩টায়, তাহলে ক্রন টেবিলে নিচের এন্ট্রি যোগ করুন:0 3 * * * /usr/bin/php /path/to/your/yii backup/databaseএখানে:
0 3 * * *: প্রতিদিন রাত ৩টায়/usr/bin/php: PHP এক্সিকিউটেবল ফাইলের পাথ/path/to/your/yii: Yii ফ্রেমওয়ার্কের মূল স্ক্রিপ্টের পাথbackup/database: যেই কনসোল অ্যাপ্লিকেশন চলবে
ক্রন জব সক্রিয় করা:
ক্রন টেবিল সংরক্ষণ করার পর, এটি স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যাবে এবং নির্দিষ্ট সময় অনুযায়ী আপনার কাজটি চালাবে।
ক্রন জব এর সুবিধা এবং ব্যবহার
- স্বয়ংক্রিয় টাস্ক: ক্রন জব দিয়ে আপনি এমন কাজগুলিকে স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময় অনুযায়ী সম্পাদন করতে পারেন, যেমন ব্যাকআপ, ডেটা ক্লিনআপ, রিপোর্ট জেনারেশন ইত্যাদি।
- স্মার্ট স্কেলিং: ক্রন জব ব্যবহার করে আপনি ব্যাকগ্রাউন্ডে নানা ধরনের সিস্টেম মেইনটেন্যান্স কাজ করতে পারেন, যা আপনার অ্যাপ্লিকেশনের পারফরম্যান্সে কোনো ব্যাঘাত ঘটায় না।
- রিপিটিটিভ কাজ: ক্রন জব এর মাধ্যমে রিপিটিটিভ কাজ যেমন ডেটা আপডেট, নোটিফিকেশন পাঠানো বা ডেটাবেস ব্যাকআপ নিয়মিতভাবে করা যায়।
Yii কনসোল অ্যাপ্লিকেশন এবং ক্রন জবের ব্যবহারিক উদাহরণ
১. ডেটাবেস ব্যাকআপ (কনসোল অ্যাপ্লিকেশন)
একটি কনসোল অ্যাপ্লিকেশন তৈরি করুন যা ডেটাবেস ব্যাকআপ নিবে:
namespace app\commands;
use Yii;
use yii\console\Controller;
use yii\db\Connection;
class BackupController extends Controller
{
public function actionDatabase()
{
// ডেটাবেস সংযোগ
$db = Yii::$app->db;
$backupFile = 'backup_' . date('Y-m-d_H-i-s') . '.sql';
// ডেটাবেস ব্যাকআপ কমান্ড
$command = "mysqldump -u {$db->username} -p{$db->password} {$db->dsn} > $backupFile";
// কমান্ড চালানো
$output = shell_exec($command);
echo "Database backup completed: $backupFile\n";
}
}
এরপর, এই কনসোল অ্যাপ্লিকেশনটি একটি ক্রন জব দ্বারা চালানোর জন্য ক্রন টেবিলে যোগ করা যাবে।
সারাংশ
Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন ব্যাকগ্রাউন্ড কাজ সম্পাদন করার জন্য ব্যবহৃত হয় এবং ক্রন জবস এটি সিডিউল করে নির্দিষ্ট সময়ে কার্যক্রম সম্পাদন করতে সাহায্য করে। কনসোল অ্যাপ্লিকেশন তৈরি করা খুব সহজ এবং এটি কমান্ড লাইন থেকে সহজেই এক্সিকিউট করা যায়। ক্রন জবস এর মাধ্যমে আপনি স্বয়ংক্রিয়ভাবে বিভিন্ন টাস্ক যেমন ব্যাকআপ, রিপোর্ট জেনারেশন বা মেইনটেন্যান্স কাজ পরিচালনা করতে পারেন।
Yii ফ্রেমওয়ার্ক কনসোল অ্যাপ্লিকেশন তৈরি করার জন্য একটি শক্তিশালী সমাধান সরবরাহ করে, যা CLI (Command Line Interface) এর মাধ্যমে অ্যাপ্লিকেশনের কার্যক্রম পরিচালনা করতে সহায়তা করে। কনসোল অ্যাপ্লিকেশন সাধারণত ব্যাকগ্রাউন্ড টাস্ক, স্ক্রিপ্ট, এবং অন্যান্য প্রক্রিয়াগুলি পরিচালনা করতে ব্যবহৃত হয়। Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন খুব সহজে তৈরি করা যায় এবং এর জন্য বিশেষভাবে একটি কনসোল কন্ট্রোলার তৈরি করা হয়।
এই অধ্যায়ে আমরা শিখব কীভাবে Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন তৈরি করা যায়।
কনসোল অ্যাপ্লিকেশন তৈরি করার জন্য প্রাথমিক কনফিগারেশন
Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন তৈরি করার জন্য একটি নতুন অ্যাপ্লিকেশন তৈরি করার পরে কিছু প্রাথমিক কনফিগারেশন করতে হয়।
১. নতুন কনসোল অ্যাপ্লিকেশন তৈরি করা
প্রথমে, Yii ফ্রেমওয়ার্কের কনসোল অ্যাপ্লিকেশন তৈরি করতে হবে। যদি আপনি composer ব্যবহার করেন, তবে কনসোল অ্যাপ্লিকেশন তৈরি করতে নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic-console
এই কমান্ডটি একটি নতুন Yii কনসোল অ্যাপ্লিকেশন তৈরি করবে এবং basic-console নামে একটি ডিরেক্টরি তৈরি করবে।
২. কনফিগারেশন ফাইল আপডেট করা
Yii কনসোল অ্যাপ্লিকেশনের জন্য একটি আলাদা কনফিগারেশন ফাইল থাকবে। এটি সাধারণত config/console.php নামে থাকে। এখানে আপনি কনসোল অ্যাপ্লিকেশনের জন্য নির্দিষ্ট কনফিগারেশন যুক্ত করতে পারেন।
// config/console.php
return yii\helpers\ArrayHelper::merge(
require __DIR__ . '/main.php',
[
'id' => 'app-console',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'app\commands', // কনসোল কন্ট্রোলার লোকেশন
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2basic',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
],
]
);
কনসোল কন্ট্রোলার তৈরি করা
Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশনের জন্য কন্ট্রোলার তৈরি করতে হয়। কনসোল কন্ট্রোলারগুলো সাধারণত commands ডিরেক্টরির মধ্যে রাখা হয়। এখানে, আমরা একটি কনসোল কন্ট্রোলার তৈরি করব, যা একটি কাস্টম কমান্ড এক্সিকিউট করবে।
কনসোল কন্ট্রোলার তৈরি করার পদ্ধতি:
commandsডিরেক্টরি তৈরি করুন (যদি এটি না থাকে):app/commandsনামের একটি ডিরেক্টরি তৈরি করুন।
- কনসোল কন্ট্রোলার ক্লাস তৈরি করুন:
app/commandsডিরেক্টরির মধ্যে একটি কনসোল কন্ট্রোলার ক্লাস তৈরি করুন, যেমনHelloController.php।
// app/commands/HelloController.php
namespace app\commands;
use yii\console\Controller;
class HelloController extends Controller
{
// একটি সাধারণ কাস্টম কমান্ড তৈরি করা
public function actionIndex()
{
echo "Hello, Yii2 Console Application!\n";
}
}
এই কনসোল কন্ট্রোলারের actionIndex() মেথডটি yii hello/index কমান্ডের মাধ্যমে এক্সিকিউট করা যাবে। এটি কনসোলের মাধ্যমে "Hello, Yii2 Console Application!" মেসেজটি প্রদর্শন করবে।
কনসোল অ্যাপ্লিকেশন চলানো
আপনি যখন কনসোল অ্যাপ্লিকেশন তৈরি করবেন এবং কনফিগারেশন সঠিকভাবে সম্পন্ন করবেন, তখন আপনি yii কমান্ড লাইনের মাধ্যমে এটি চালাতে পারবেন।
কনসোল অ্যাপ্লিকেশন চালানোর পদ্ধতি:
- কনসোল কন্ট্রোলার এক্সিকিউট করা:
php yii hello/index
এটি আপনার কনসোল অ্যাপ্লিকেশনের HelloController এর actionIndex() মেথড এক্সিকিউট করবে এবং আপনি কনসোল উইন্ডোতে মেসেজটি দেখতে পারবেন:
Hello, Yii2 Console Application!
অন্যান্য কনসোল কমান্ড ব্যবহার করা:
Yii ফ্রেমওয়ার্কে অনেক বিল্ট-ইন কনসোল কমান্ডও রয়েছে। উদাহরণস্বরূপ, ডাটাবেস মাইগ্রেশন চালানো বা ক্যাশিং অপারেশনগুলি পরিচালনা করা:
- ডাটাবেস মাইগ্রেশন:
php yii migrate
- গি জেনারেটর (কনসোলের মাধ্যমে):
php yii gii
কাস্টম কনসোল কমান্ড তৈরি করা
Yii তে আপনি কাস্টম কনসোল কমান্ড তৈরি করতে পারেন, যা আরও উন্নত কার্যক্রম বা ব্যাকগ্রাউন্ড টাস্ক পরিচালনা করতে সহায়তা করবে। কনসোল অ্যাপ্লিকেশন কন্ট্রোলারে যে কোনো মেথডকে কাস্টম কমান্ড হিসেবে সংজ্ঞায়িত করা যায়, যা yii কমান্ড লাইনে ব্যবহার করা যাবে।
কাস্টম কনসোল কমান্ড উদাহরণ:
// app/commands/TaskController.php
namespace app\commands;
use yii\console\Controller;
class TaskController extends Controller
{
public function actionRunTask()
{
echo "Running background task...\n";
// এখানে আপনার ব্যাকগ্রাউন্ড টাস্ক বা কার্যক্রম কোড থাকবে
}
}
এটি চালানোর জন্য:
php yii task/run-task
সারাংশ
Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন তৈরি করা খুবই সহজ। আপনি কনসোল কন্ট্রোলার তৈরি করে বিভিন্ন ব্যাকগ্রাউন্ড টাস্ক বা কমান্ড লাইনে এক্সিকিউটেবল কার্যক্রম সংজ্ঞায়িত করতে পারেন। Yii-তে কনসোল অ্যাপ্লিকেশন কার্যকরভাবে ব্যবহৃত হয় বিভিন্ন ধরনের সিস্টেম টাস্ক, ডাটাবেস মাইগ্রেশন, এবং স্ক্রিপ্ট চালানোর জন্য।
- Yii কনসোল অ্যাপ্লিকেশন তৈরি করার জন্য আপনাকে
commandsডিরেক্টরিতে কনসোল কন্ট্রোলার তৈরি করতে হবে। - কনসোল কমান্ডগুলো
yiiকমান্ড লাইনের মাধ্যমে এক্সিকিউট করা যায়। - Yii-তে কাস্টম কনসোল কমান্ড তৈরি করা এবং এক্সিকিউট করা খুবই সহজ, যা বিভিন্ন ব্যাকগ্রাউন্ড কার্যক্রম বা টাস্ক পরিচালনার জন্য উপযোগী।
Yii ফ্রেমওয়ার্কে কনসোল অ্যাপ্লিকেশন ব্যবহৃত হয় টাস্ক বা ব্যাচ কাজের জন্য। আপনি যেকোনো CLI (Command Line Interface) ভিত্তিক কাজ যেমন ডেটাবেস মাইগ্রেশন, কাস্টম স্ক্রিপ্ট চালানো, ক্রন টাস্ক ব্যবস্থাপনা ইত্যাদি করতে Yii কনসোল কমান্ড ব্যবহার করতে পারেন। Yii কনসোল কমান্ডগুলির মধ্যে বিভিন্ন আর্গুমেন্ট নেওয়া যায় যা সেই কমান্ডের কার্যকারিতা নির্ধারণ করে।
এই অধ্যায়ে আমরা কনসোল কমান্ড তৈরি করার পদ্ধতি, এবং কমান্ডে আর্গুমেন্ট ব্যবহার করার পদ্ধতি নিয়ে আলোচনা করব।
কনসোল কমান্ড তৈরি করা
Yii ফ্রেমওয়ার্কে কনসোল কমান্ড তৈরি করতে, প্রথমে আপনাকে একটি নতুন কমান্ড ক্লাস তৈরি করতে হবে যা yii\console\Controller থেকে এক্সটেন্ড করা হয়। এই ক্লাসে আপনি আপনার কাস্টম কমান্ডের লজিক এবং আর্গুমেন্ট প্রসেসিং লিখতে পারবেন।
১. কনসোল কমান্ড ক্লাস তৈরি করা
এটি করতে আপনাকে commands ডিরেক্টরি তৈরি করতে হবে (যদি তা আগে না থাকে) এবং সেখানে আপনার কমান্ড ক্লাসটি রাখবেন। উদাহরণস্বরূপ, আপনি যদি একটি HelloCommand তৈরি করতে চান, তাহলে আপনাকে একটি নতুন PHP ফাইল তৈরি করতে হবে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex()
{
echo "Hello, Yii Console Application!\n";
}
}
এখানে, actionIndex() হল কমান্ডের মেথড যা চালানোর পর "Hello, Yii Console Application!" বার্তা প্রদর্শন করবে।
২. কনসোল কমান্ড চালানো
এখন আপনার তৈরি করা কনসোল কমান্ডটি চালানোর জন্য, CLI থেকে নিম্নলিখিত কমান্ড ব্যবহার করুন:
php yii hello/index
এটি HelloCommand ক্লাসের actionIndex() মেথডটি চালাবে এবং "Hello, Yii Console Application!" আউটপুট হিসেবে দেখাবে।
কনসোল কমান্ডে আর্গুমেন্ট ব্যবহার করা
Yii কনসোল কমান্ডে আর্গুমেন্ট ব্যবহার করা খুবই সহজ। আপনি কমান্ডের আর্গুমেন্টকে ফাংশন প্যারামিটার হিসেবে গ্রহণ করতে পারেন। এই আর্গুমেন্টগুলি কমান্ড লাইনে ব্যবহারকারী থেকে ইনপুট হিসেবে পাওয়া যায়।
১. আর্গুমেন্ট নিয়ে কনসোল কমান্ড তৈরি করা
আর্গুমেন্টের মাধ্যমে আপনি কমান্ডের কার্যকারিতা কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, একটি HelloCommand কমান্ড তৈরি করা যেটি একটি ব্যক্তির নাম গ্রহণ করবে এবং তাকে স্বাগতম জানাবে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex($name = 'Guest')
{
echo "Hello, " . $name . "!\n";
}
}
এখানে, actionIndex মেথডের $name প্যারামিটারটি আর্গুমেন্ট হিসেবে গ্রহণ করবে এবং যদি ব্যবহারকারী কিছু ইনপুট না দেয়, তাহলে ডিফল্ট মান হিসেবে "Guest" ব্যবহার করবে।
২. আর্গুমেন্ট সহ কনসোল কমান্ড চালানো
এখন, আপনি যদি ব্যবহারকারীর কাছ থেকে নাম ইনপুট নিতে চান, তাহলে কমান্ড লাইনে name আর্গুমেন্টটি প্রদান করতে হবে।
php yii hello/index John
এটি আউটপুট করবে:
Hello, John!
যদি আর্গুমেন্ট না দেয়া হয়, তাহলে এটি ডিফল্ট নাম Guest ব্যবহার করবে:
php yii hello/index
এটি আউটপুট করবে:
Hello, Guest!
আর্গুমেন্টের ধরন এবং Validation
Yii কনসোল কমান্ডে আর্গুমেন্টের ধরন (type) এবং ভ্যালিডেশন যোগ করা যায়। আপনি required, default, validate ইত্যাদি প্যারামিটার ব্যবহার করে আর্গুমেন্টগুলোকে কাস্টমাইজ করতে পারেন।
১. আর্গুমেন্ট ভ্যালিডেশন
Yii ফ্রেমওয়ার্ক আপনাকে আর্গুমেন্টের জন্য ভ্যালিডেশন যোগ করার সুযোগ দেয়, যেমন আর্গুমেন্টটি একটি ইন্টিজার হতে হবে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex($name = 'Guest', $age = null)
{
if ($age !== null && !is_numeric($age)) {
echo "Age must be a number.\n";
return;
}
echo "Hello, " . $name . "!\n";
if ($age !== null) {
echo "You are " . $age . " years old.\n";
}
}
}
এখানে, $age আর্গুমেন্টটি কেবলমাত্র যদি সংখ্যা হয়, তবেই গ্রহণ করা হবে।
২. কনসোল কমান্ড চালানোর উদাহরণ
php yii hello/index John 25
এটি আউটপুট করবে:
Hello, John!
You are 25 years old.
যদি age আর্গুমেন্ট হিসেবে একটি অবৈধ মান দেয়া হয়, যেমন একটি স্ট্রিং, তাহলে এটি একটি ত্রুটি দেখাবে:
php yii hello/index John abc
এটি আউটপুট করবে:
Age must be a number.
আর্গুমেন্টের ডিফল্ট মান নির্ধারণ
Yii ফ্রেমওয়ার্কে, আপনি আর্গুমেন্টের জন্য ডিফল্ট মান নির্ধারণ করতে পারেন। এটি সেই আর্গুমেন্টের জন্য ব্যবহৃত হবে যদি ব্যবহারকারী কোন মান প্রদান না করে।
commands/HelloCommand.php:
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class HelloCommand extends Controller
{
public function actionIndex($name = 'Guest', $city = 'Unknown')
{
echo "Hello, " . $name . " from " . $city . "!\n";
}
}
এখন, যদি ব্যবহারকারী নাম বা শহর ইনপুট না দেয়, তবে সেগুলি স্বয়ংক্রিয়ভাবে ডিফল্ট মান গ্রহণ করবে।
কনসোল কমান্ড চালানো
php yii hello/index Alice Dhaka
এটি আউটপুট করবে:
Hello, Alice from Dhaka!
যদি কোনো আর্গুমেন্ট না দেয়া হয়, তবে ডিফল্ট মান ব্যবহার হবে:
php yii hello/index
এটি আউটপুট করবে:
Hello, Guest from Unknown!
সারাংশ
Yii ফ্রেমওয়ার্কের কনসোল অ্যাপ্লিকেশন এবং কনসোল কমান্ডস খুবই শক্তিশালী এবং লচিল। আপনি কনসোল কমান্ড তৈরি করে অ্যাপ্লিকেশনের ব্যাচ কাজ পরিচালনা করতে পারেন এবং আর্গুমেন্টের মাধ্যমে কমান্ডের কার্যকারিতা কাস্টমাইজ করতে পারেন। কনসোল কমান্ডে আর্গুমেন্ট গ্রহণ, তাদের ভ্যালিডেশন, ডিফল্ট মান সেট করা এবং কাস্টম আর্গুমেন্ট প্রক্রেসিং Yii ফ্রেমওয়ার্কের মাধ্যমে খুবই সহজ।
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-তে ব্যাকগ্রাউন্ড টাস্ক এবং ক্রন জব কনফিগারেশন সহজ এবং শক্তিশালী, যা অ্যাপ্লিকেশনকে স্কেল এবং পারফরম্যান্স উন্নত করতে সহায়তা করে।
Yii ফ্রেমওয়ার্কে লগিং এবং মনিটরিং হল দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা অ্যাপ্লিকেশনের কার্যক্রম পর্যবেক্ষণ এবং সমস্যা চিহ্নিত করতে সহায়তা করে। Yii ফ্রেমওয়ার্কের লগিং সিস্টেম শক্তিশালী এবং কনফিগারেবল, যা ডেভেলপারদের অ্যাপ্লিকেশনের গতিবিধি, ত্রুটি, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য ট্র্যাক করতে সাহায্য করে।
এই নিবন্ধে, আমরা Yii ফ্রেমওয়ার্কে লগিং এবং মনিটরিং কিভাবে ব্যবহার করা যায় তা দেখব।
১. লগিং কনফিগারেশন
Yii ফ্রেমওয়ার্কে লগিং কনফিগার করার জন্য log কম্পোনেন্ট ব্যবহার করা হয়। এই কম্পোনেন্ট বিভিন্ন ধরনের লগ মেসেজ লিখতে এবং সেই মেসেজগুলোর গুরুত্ব অনুসারে তাদের ফিল্টার করার জন্য ব্যবহার করা হয়।
১.১. লগিং কনফিগারেশন সেটআপ
Yii-এর লগিং সিস্টেম কনফিগার করার জন্য config/web.php বা config/main.php ফাইলে log কম্পোনেন্ট কনফিগার করতে হয়। এর মধ্যে বিভিন্ন লগ টার্গেট যেমন file, db, email, syslog ইত্যাদি নির্ধারণ করা যায়।
'components' => [
'log' => [
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'], // কোন ধরনের লগ নিতে হবে তা নির্ধারণ
'logFile' => '@runtime/logs/app.log', // লগ ফাইলের অবস্থান
],
[
'class' => 'yii\log\DbTarget',
'levels' => ['error', 'warning'],
'logTable' => 'log', // লগ তথ্য সংরক্ষণের জন্য ডাটাবেস টেবিল
],
],
],
],
এখানে, দুটি log টার্গেট কনফিগার করা হয়েছে:
- FileTarget: যেখানে
errorএবংwarningলেভেলের লগ ফাইল হিসেবে@runtime/logs/app.logফাইলে সংরক্ষিত হবে। - DbTarget: যেখানে
errorএবংwarningলেভেলের লগ ডাটাবেসে সংরক্ষিত হবে,logটেবিলের মধ্যে।
১.২. লগ লেভেলস
Yii-তে লগের লেভেল গুলো নির্ধারণ করা যায়, যা লগের গুরুত্ব নির্দেশ করে। সাধারণভাবে, এগুলো হলো:
trace: সর্বনিম্ন লগ লেভেল, যা সাধারণত ডিবাগgingের জন্য ব্যবহার করা হয়।debug: ডিবাগging তথ্য লগ করতে ব্যবহার হয়।info: সাধারণ তথ্য, যা সাধারণত প্রসেস বা কার্যক্রমের অগ্রগতি দেখানোর জন্য ব্যবহৃত হয়।warning: সতর্কতা, যা কিছু অস্বাভাবিক পরিস্থিতি জানাতে ব্যবহৃত হয়।error: ত্রুটি বা অ্যাপ্লিকেশন ব্যর্থতা নির্দেশ করে।
১.৩. লগ মেসেজ তৈরি করা
Yii ফ্রেমওয়ার্কে লগ মেসেজ তৈরি করতে Yii::info(), Yii::warning(), Yii::error(), এবং Yii::trace() মেথড ব্যবহার করা হয়।
Yii::info('This is an informational message');
Yii::warning('This is a warning message');
Yii::error('This is an error message');
Yii::trace('This is a trace message');
এখানে, প্রতিটি মেথড বিভিন্ন ধরনের লগ লেভেল দিয়ে মেসেজ লগ করবে।
২. মনিটরিং
Yii ফ্রেমওয়ার্কে অ্যাপ্লিকেশন মনিটরিং করতে, বিশেষ করে পারফরম্যান্স ট্র্যাক করার জন্য আপনি yii\base\DynamicModel এবং yii\db\Query ইত্যাদি ব্যবহার করে বিভিন্ন স্ট্যাটিস্টিক এবং মেট্রিকস ট্র্যাক করতে পারেন। এছাড়া, Yii এর লগ সিস্টেমের মাধ্যমে ত্রুটির ঘটনা এবং অন্যান্য গুরুত্বপূর্ণ তথ্য মনিটর করা যায়।
২.১. প্রোফাইলিং
Yii ফ্রেমওয়ার্ক প্রোফাইলিং সক্ষম করার জন্য একটি শক্তিশালী টুল সরবরাহ করে। আপনি প্রোফাইলিং সক্রিয় করতে config/web.php ফাইলে yii\debug\Module ব্যবহার করতে পারেন।
'modules' => [
'debug' => [
'class' => 'yii\debug\Module',
'allowedIPs' => ['127.0.0.1', '::1'], // ডেভেলপমেন্ট পরিবেশে শুধু লিস্টেড IP থেকেই প্রোফাইলিং দেখতে পারবেন
],
],
প্রোফাইলিং সক্রিয় করলে, ওয়েব অ্যাপ্লিকেশনের প্রতিটি পেজের ডিবাগ বার প্রদর্শিত হবে, যা আপনাকে পেজের লোড সময়, ডাটাবেস কোয়েরি সংখ্যা, মেমরি ব্যবহার এবং আরও অনেক পরিসংখ্যান দেখাবে।
২.২. মেট্রিকস ট্র্যাকিং
Yii এর Profiler এবং Debug Toolbar আপনার অ্যাপ্লিকেশনের পারফরম্যান্স ট্র্যাক করতে সহায়তা করে। এটি ডাটাবেস কোয়েরি, মেমরি ব্যবহারের পরিসংখ্যান, এবং প্রতিটি রিকোয়েস্টের সময়কাল সহ অন্যান্য ডেটা দেখাতে পারে।
ডিবাগ টুলবারে সাধারণত এই পরিসংখ্যানগুলি প্রদর্শিত হয়:
- Request Time: পেজ লোড হতে কত সময় লাগছে।
- Database Queries: কতটি ডাটাবেস কোয়েরি চলেছে।
- Memory Usage: কত মেমরি ব্যবহৃত হয়েছে।
- Cache Usage: ক্যাশ ব্যবহারের পরিসংখ্যান।
৩. লগফাইল বিশ্লেষণ
Yii লগ সিস্টেমের মাধ্যমে সিস্টেমের কার্যক্রম এবং ত্রুটি গুলি একসাথে দেখা যায়। এই লগ ফাইল গুলি বিশ্লেষণ করা খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি কোন সমস্যা সমাধান করতে চান। আপনি লগ ফাইলগুলিকে বিভিন্ন টুলের মাধ্যমে বিশ্লেষণ করতে পারেন যেমন LogViewer বা অন্যান্য থার্ড-পার্টি টুল।
৪. সার্ভার মনিটরিং
Yii ফ্রেমওয়ার্ক সার্ভার মনিটরিংয়ের জন্য কিছু বাইরের টুলের সাথে ইন্টিগ্রেট হতে পারে। এর মধ্যে New Relic, Datadog, Prometheus, Grafana ইত্যাদি টুলগুলি ব্যবহার করা যেতে পারে। এই টুলগুলি সার্ভারের পারফরম্যান্স এবং অ্যাপ্লিকেশনের রেসপন্স টাইম ট্র্যাক করতে ব্যবহৃত হয়।
সারাংশ
Yii ফ্রেমওয়ার্কে লগিং এবং মনিটরিং খুবই শক্তিশালী এবং কনফিগারেবল। লগিং সিস্টেমের মাধ্যমে বিভিন্ন লেভেলের মেসেজ যেমন error, warning, info ইত্যাদি লগ করা যায়, যা পরবর্তীতে সমস্যা চিহ্নিত করতে সহায়তা করে। প্রোফাইলিং এবং মনিটরিং টুলসের মাধ্যমে অ্যাপ্লিকেশনের পারফরম্যান্স এবং কার্যক্রমের সঠিকভাবে ট্র্যাকিং করা যায়। এতে ডেভেলপাররা অ্যাপ্লিকেশনের উন্নতির জন্য প্রয়োজনীয় তথ্য সহজেই পেতে পারেন।
Read more