ব্যাবসা শুরু করুন
কিছু সময় প্রক্রিয়া চালু হওয়ার পরে আমরা কিছু ব্যবসায়িক শুরু করতে হয়, যা প্রক্রিয়ার জীবনকালে একবার মাত্র সম্পাদিত হয়, যেমনঃ প্রক্রিয়া চালু হওয়ার পর একটি টাইমার সেট এবং ডাটাবেস সংযোগ ইনিশিয়ালাইজেশন। নীচে আমরা এটি বিবেচনা করব।
প্রিন্সিপাল
প্রসেস ফ্লো এর ভিত্তিতে, webman প্রক্রিয়া শুরু হওয়ার পর config/bootstrap.php
(ইনক্লুড config/plugin/*/*/bootstrap.php
) এ সেট করা ক্লাস লোড করে এবং ক্লাসের start মেথড চালিয়ে থাকে। আমরা start মেথডে ব্যবসায় কোড যোগ করে প্রক্রিয়া শুরুর পর ব্যবসা শুরু করা যেতে পারি।
ফ্লো
ধরা যাক আমরা একটি টাইমার তৈরি করতে চাই, যা বর্তমান প্রক্রিয়ার মেমরি অধিগ্রহণকে নির্দেশ করে। এই ক্লাসটি MemReport
নামক হবে।
প্রসেস কমান্ড
php webman make:bootstrap MemReport
কমান্ড চালানো যেতে পারে এবং ইনিশিয়েলাইজেশন ফাইল app/bootstrap/MemReport.php
তৈরি করা যেতে পারে।
নির্দেশ
যদি আপনার webman এwebman/console
ইনস্টল না থাকে, তবেcomposer require webman/console
কমান্ড চালানো যেতে পারে।
ইনিশিয়েলাইজেশন ফাইল সম্পাদনা করুন
app/bootstrap/MemReport.php
ফাইল সম্পাদনা করুন, যেমন -
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MemReport implements Bootstrap
{
public static function start($worker)
{
// কি আমরা কনসোল মাধ্যম ?
$is_console = !$worker;
if ($is_console) {
// আপনি যদি কনসোল মাধ্যমে এই ইনিশিয়েলাইজেশন চালিয়ে না চান তাহলে এখানে একটি রিটার্ন করুন
return;
}
// প্রতি 10 সেকেন্ড অভিলেখ করুন
\Workerman\Timer::add(10, function () {
// ডেমো করার জন্য, আমরা এখানে রিপোর্টিং প্রক্রিয়াকে প্রতিস্থান হিসাবে ব্যবহার করেছি
echo memory_get_usage() . "\n";
});
}
}
নির্দেশ
অভিলেখ ব্যবহার করা হওয়ার সময়, ফ্রেমওয়ার্কটি অবশ্যইconfig/bootstrap.php
সেটিংস এর start মেথডটি চালাবে, আমরা যেভাবে ডিসিড করবো সেটি চেক করতে পারি কোন মিডিলে এই ব্যবসায় ইনিশিয়েলাইজেশন কোডটি চালিয়ে।
প্রসেস সাথে স্টার্টাপ করাও
config/bootstrap.php
খোলুন এবং MemReport
ক্লাসটি স্টার্টাপ আইটেমে যোগ করুন।
return [
// ...অন্যান্য কনফিগারেশন এখানে জাতিল...
app\bootstrap\MemReport::class,
];
এভাবে আমরাই একটি ব্যবসায় আরম্ভিক পদক্ষেপ সমাপ্ত করেছি।
সংক্ষেপ মন্তব্য
কাস্টম প্রসেস চালু হওয়ার পর config/bootstrap.php
সেটিংস এর start মেথডটি চালিয়ে থাকবে, আমরা যেভাবে ডিসিড করবো সেটি চেক করতে পারি কোন প্রসেসটি আমাদের ব্যবসায় ইনিশিয়েলাইজেশন কোডটি চালিয়ে থাকবে, যেমনঃ আমরা যদি monitor প্রসেসটিকে নয়, তাহলে MemReport.php
এর বিষয়ে বিবরণ নিম্নলিখিতভাবে হতে পারে।
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MemReport implements Bootstrap
{
public static function start($worker)
{
// কি আমরা কনসোল মাধ্যম ?
$is_console = !$worker;
if ($is_console) {
// আপনি যদি কনসোল মাধ্যমে এই ইনিশিয়েলাইজেশন চালিয়ে না চান তাহলে এখানে একটি রিটার্ন করুন
return;
}
// monitor প্রসেসটি সময় না অনুমতি দিয়ে চলাবে
if ($worker->name == 'monitor') {
return;
}
// প্রতি 10 সেকেন্ড অভিলেখ করুন
\Workerman\Timer::add(10, function () {
// ডেমো করার জন্য, আমরা এখানে রিপোর্টিং প্রক্রিয়াকে প্রতিস্থান হিসাবে ব্যবহার করেছি
echo memory_get_usage() . "\n";
});
}
}