কমান্ড লাইন
Webman কমান্ড-লাইন উপাদান
ইনস্টলেশন
composer require webman/console
দ্রষ্টব্য
নিচের কমান্ডগুলিwebman/consolev2.2 এবং তার উপরের সংস্করণের জন্য। কিছু বৈশিষ্ট্য না থাকলে আপডেট করুন।
বিষয়সূচি
কোড জেনারেশন
- make:controller - নিয়ন্ত্রক ক্লাস তৈরি করুন
- make:model - ডাটাবেস টেবিল থেকে মডেল ক্লাস তৈরি করুন
- make:crud - সম্পূর্ণ CRUD তৈরি করুন (মডেল + নিয়ন্ত্রক + যাচাইকারী)
- make:middleware - মিডলওয়্যার ক্লাস তৈরি করুন
- make:command - কনসোল কমান্ড ক্লাস তৈরি করুন
- make:bootstrap - বুটস্ট্র্যাপ ইনিশিয়ালাইজেশন ক্লাস তৈরি করুন
- make:process - কাস্টম প্রসেস ক্লাস তৈরি করুন
বিল্ড এবং ডিপ্লয়মেন্ট
- build:phar - প্রজেক্টকে PHAR আর্কাইভ হিসেবে প্যাকেজ করুন
- build:bin - প্রজেক্টকে স্ট্যান্ডঅ্যালোন বাইনারি হিসেবে প্যাকেজ করুন
- install - Webman ইনস্টলেশন স্ক্রিপ্ট চালান
ইউটিলিটি কমান্ড
- version - Webman ফ্রেমওয়ার্ক সংস্করণ প্রদর্শন করুন
- fix-disable-functions - php.ini-তে নিষ্ক্রিয় ফাংশন ঠিক করুন
- route:list - সমস্ত নিবন্ধিত রুট প্রদর্শন করুন
অ্যাপ প্লাগইন ব্যবস্থাপনা (app-plugin:*)
- app-plugin:create - নতুন অ্যাপ প্লাগইন তৈরি করুন
- app-plugin:install - অ্যাপ প্লাগইন ইনস্টল করুন
- app-plugin:uninstall - অ্যাপ প্লাগইন আনইনস্টল করুন
- app-plugin:update - অ্যাপ প্লাগইন আপডেট করুন
- app-plugin:zip - অ্যাপ প্লাগইনকে ZIP হিসেবে প্যাকেজ করুন
প্লাগইন ব্যবস্থাপনা (plugin:*)
- plugin:create - নতুন Webman প্লাগইন তৈরি করুন
- plugin:install - Webman প্লাগইন ইনস্টল করুন
- plugin:uninstall - Webman প্লাগইন আনইনস্টল করুন
- plugin:enable - Webman প্লাগইন সক্রিয় করুন
- plugin:disable - Webman প্লাগইন নিষ্ক্রিয় করুন
- plugin:export - প্লাগইন সোর্স কোড এক্সপোর্ট করুন
সেবা ব্যবস্থাপনা
- start - Webman ওয়ার্কার প্রসেস চালু করুন
- stop - Webman ওয়ার্কার প্রসেস বন্ধ করুন
- restart - Webman ওয়ার্কার প্রসেস পুনরায় চালু করুন
- reload - ডাউনটাইম ছাড়াই কোড রিলোড করুন
- status - ওয়ার্কার প্রসেস স্ট্যাটাস দেখুন
- connections - ওয়ার্কার প্রসেস সংযোগ তথ্য পান
কোড জেনারেশন
make:controller
নিয়ন্ত্রক ক্লাস তৈরি করুন।
ব্যবহার:
php webman make:controller <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | নিয়ন্ত্রক নাম (সাফিক্স ছাড়া) |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে নিয়ন্ত্রক তৈরি করুন |
--path |
-P |
কাস্টম নিয়ন্ত্রক পাথ |
--force |
-f |
ফাইল থাকলে ওভাররাইট করুন |
--no-suffix |
"Controller" সাফিক্স যোগ করবেন না |
উদাহরণ:
# Create UserController in app/controller
php webman make:controller User
# Create in plugin
php webman make:controller AdminUser -p admin
# Custom path
php webman make:controller User -P app/api/controller
# Overwrite existing file
php webman make:controller User -f
# Create without "Controller" suffix
php webman make:controller UserHandler --no-suffix
তৈরি ফাইল স্ট্রাকচার:
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function index(Request $request)
{
return response('hello user');
}
}
নোট:
- নিয়ন্ত্রকগুলি ডিফল্টভাবে
app/controller/-এ রাখা হয় - কনফিগ থেকে নিয়ন্ত্রক সাফিক্স স্বয়ংক্রিয়ভাবে যোগ করা হয়
- ফাইল থাকলে ওভাররাইট নিশ্চিতকরণের জন্য প্রম্পট করা হয় (অন্যান্য কমান্ডের জন্যও একই)
make:model
ডাটাবেস টেবিল থেকে মডেল ক্লাস তৈরি করুন। Laravel ORM এবং ThinkORM সমর্থন করে।
ব্যবহার:
php webman make:model [name]
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
No | মডেল ক্লাস নাম, ইন্টারঅ্যাক্টিভ মোডে বাদ দেওয়া যেতে পারে |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে মডেল তৈরি করুন |
--path |
-P |
টার্গেট ডিরেক্টরি (প্রজেক্ট রুটের সাপেক্ষে) |
--table |
-t |
টেবিল নাম নির্দিষ্ট করুন; কনভেনশন অনুসরণ না করলে সুপারিশ করা হয় |
--orm |
-o |
ORM নির্বাচন করুন: laravel বা thinkorm |
--database |
-d |
ডাটাবেস সংযোগ নাম নির্দিষ্ট করুন |
--force |
-f |
বিদ্যমান ফাইল ওভাররাইট করুন |
পাথ নোট:
- ডিফল্ট:
app/model/(মেইন অ্যাপ) অথবাplugin/<plugin>/app/model/(প্লাগইন) --pathপ্রজেক্ট রুটের সাপেক্ষে, যেমনplugin/admin/app/model--pluginএবং--pathএকসাথে ব্যবহার করলে, উভয়কে একই ডিরেক্টরিতে নির্দেশ করতে হবে
উদাহরণ:
# Create User model in app/model
php webman make:model User
# Specify table name and ORM
php webman make:model User -t wa_users -o laravel
# Create in plugin
php webman make:model AdminUser -p admin
# Custom path
php webman make:model User -P plugin/admin/app/model
ইন্টারঅ্যাক্টিভ মোড: নাম বাদ দিলে ইন্টারঅ্যাক্টিভ ফ্লোতে প্রবেশ করে: টেবিল নির্বাচন করুন → মডেল নাম লিখুন → পাথ লিখুন। সমর্থন: আরও দেখতে এন্টার, খালি মডেল তৈরি করতে 0, টেবিল ফিল্টার করতে /keyword।
তৈরি ফাইল স্ট্রাকচার:
<?php
namespace app\model;
use support\Model;
/**
* @property integer $id (primary key)
* @property string $name
*/
class User extends Model
{
protected $connection = 'mysql';
protected $table = 'users';
protected $primaryKey = 'id';
public $timestamps = true;
}
@property অ্যানোটেশন টেবিল স্ট্রাকচার থেকে স্বয়ংক্রিয়ভাবে তৈরি হয়। MySQL এবং PostgreSQL সমর্থন করে।
make:crud
ডাটাবেস টেবিল থেকে একবারে মডেল, নিয়ন্ত্রক এবং যাচাইকারী তৈরি করুন, সম্পূর্ণ CRUD ক্ষমতা গঠন করুন।
ব্যবহার:
php webman make:crud
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--table |
-t |
টেবিল নাম নির্দিষ্ট করুন |
--model |
-m |
মডেল ক্লাস নাম |
--model-path |
-M |
মডেল ডিরেক্টরি (প্রজেক্ট রুটের সাপেক্ষে) |
--controller |
-c |
নিয়ন্ত্রক ক্লাস নাম |
--controller-path |
-C |
নিয়ন্ত্রক ডিরেক্টরি |
--validator |
যাচাইকারী ক্লাস নাম (webman/validation প্রয়োজন) |
|
--validator-path |
যাচাইকারী ডিরেক্টরি (webman/validation প্রয়োজন) |
|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে ফাইল তৈরি করুন |
--orm |
-o |
ORM: laravel বা thinkorm |
--database |
-d |
ডাটাবেস সংযোগ নাম |
--force |
-f |
বিদ্যমান ফাইল ওভাররাইট করুন |
--no-validator |
যাচাইকারী তৈরি করবেন না | |
--no-interaction |
-n |
নন-ইন্টারঅ্যাক্টিভ মোড, ডিফল্ট ব্যবহার করুন |
এক্সিকিউশন ফ্লো: --table নির্দিষ্ট না থাকলে ইন্টারঅ্যাক্টিভ টেবিল সিলেকশনে প্রবেশ করে; মডেল নাম ডিফল্টভাবে টেবিল নাম থেকে অনুমান করা হয়; নিয়ন্ত্রক নাম ডিফল্টভাবে মডেল নাম + নিয়ন্ত্রক সাফিক্স; যাচাইকারী নাম ডিফল্টভাবে সাফিক্স ছাড়া নিয়ন্ত্রক নাম + Validator। ডিফল্ট পাথ: মডেল app/model/, নিয়ন্ত্রক app/controller/, যাচাইকারী app/validation/; প্লাগইনের জন্য: plugin/<plugin>/app/-এর অধীনে সংশ্লিষ্ট সাবডিরেক্টরি।
উদাহরণ:
# Interactive generation (step-by-step confirmation after table selection)
php webman make:crud
# Specify table name
php webman make:crud --table=users
# Specify table name and plugin
php webman make:crud --table=users --plugin=admin
# Specify paths
php webman make:crud --table=users --model-path=app/model --controller-path=app/controller
# Do not generate validator
php webman make:crud --table=users --no-validator
# Non-interactive + overwrite
php webman make:crud --table=users --no-interaction --force
তৈরি ফাইল স্ট্রাকচার:
মডেল (app/model/User.php):
<?php
namespace app\model;
use support\Model;
class User extends Model
{
protected $connection = 'mysql';
protected $table = 'users';
protected $primaryKey = 'id';
}
নিয়ন্ত্রক (app/controller/UserController.php):
<?php
namespace app\controller;
use support\Request;
use support\Response;
use app\model\User;
use app\validation\UserValidator;
use support\validation\annotation\Validate;
class UserController
{
#[Validate(validator: UserValidator::class, scene: 'create', in: ['body'])]
public function create(Request $request): Response
{
$data = $request->post();
$model = new User();
foreach ($data as $key => $value) {
$model->setAttribute($key, $value);
}
$model->save();
return json(['code' => 0, 'msg' => 'ok', 'data' => $model]);
}
#[Validate(validator: UserValidator::class, scene: 'update', in: ['body'])]
public function update(Request $request): Response
{
if (!$model = User::find($request->post('id'))) {
return json(['code' => 1, 'msg' => 'not found']);
}
$data = $request->post();
unset($data['id']);
foreach ($data as $key => $value) {
$model->setAttribute($key, $value);
}
$model->save();
return json(['code' => 0, 'msg' => 'ok', 'data' => $model]);
}
#[Validate(validator: UserValidator::class, scene: 'delete', in: ['body'])]
public function delete(Request $request): Response
{
if (!$model = User::find($request->post('id'))) {
return json(['code' => 1, 'msg' => 'not found']);
}
$model->delete();
return json(['code' => 0, 'msg' => 'ok']);
}
#[Validate(validator: UserValidator::class, scene: 'detail')]
public function detail(Request $request): Response
{
if (!$model = User::find($request->input('id'))) {
return json(['code' => 1, 'msg' => 'not found']);
}
return json(['code' => 0, 'msg' => 'ok', 'data' => $model]);
}
}
যাচাইকারী (app/validation/UserValidator.php):
<?php
declare(strict_types=1);
namespace app\validation;
use support\validation\Validator;
class UserValidator extends Validator
{
protected array $rules = [
'id' => 'required|integer|min:0',
'username' => 'required|string|max:32'
];
protected array $messages = [];
protected array $attributes = [
'id' => 'প্রাথমিক কী',
'username' => 'ব্যবহারকারীর নাম'
];
protected array $scenes = [
'create' => ['username', 'nickname'],
'update' => ['id', 'username'],
'delete' => ['id'],
'detail' => ['id'],
];
}
নোট:
webman/validationইনস্টল বা সক্রিয় না থাকলে যাচাইকারী জেনারেশন বাদ দেওয়া হয় (composer require webman/validationদিয়ে ইনস্টল করুন)- যাচাইকারী
attributesডাটাবেস ফিল্ড কমেন্ট থেকে স্বয়ংক্রিয়ভাবে তৈরি হয়; কমেন্ট না থাকলেattributesনেই - যাচাইকারী এরর মেসেজ i18n সমর্থন করে; ভাষা
config('translation.locale')থেকে নির্বাচিত হয়
make:middleware
মিডলওয়্যার ক্লাস তৈরি করুন এবং config/middleware.php-এ স্বয়ংক্রিয়ভাবে নিবন্ধন করুন (প্লাগইনের জন্য plugin/<plugin>/config/middleware.php)।
ব্যবহার:
php webman make:middleware <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | মিডলওয়্যার নাম |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে মিডলওয়্যার তৈরি করুন |
--path |
-P |
টার্গেট ডিরেক্টরি (প্রজেক্ট রুটের সাপেক্ষে) |
--force |
-f |
বিদ্যমান ফাইল ওভাররাইট করুন |
উদাহরণ:
# Create Auth middleware in app/middleware
php webman make:middleware Auth
# Create in plugin
php webman make:middleware Auth -p admin
# Custom path
php webman make:middleware Auth -P plugin/admin/app/middleware
তৈরি ফাইল স্ট্রাকচার:
<?php
namespace app\middleware;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
class Auth implements MiddlewareInterface
{
public function process(Request $request, callable $handler) : Response
{
return $handler($request);
}
}
নোট:
- ডিফল্টভাবে
app/middleware/-এ রাখা হয় - ক্লাস নাম স্বয়ংক্রিয়ভাবে মিডলওয়্যার কনফিগ ফাইলে যোগ করা হয় সক্রিয়করণের জন্য
make:command
কনসোল কমান্ড ক্লাস তৈরি করুন।
ব্যবহার:
php webman make:command <command-name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
command-name |
Yes | কমান্ড নাম group:action ফরম্যাটে (যেমন user:list) |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে কমান্ড তৈরি করুন |
--path |
-P |
টার্গেট ডিরেক্টরি (প্রজেক্ট রুটের সাপেক্ষে) |
--force |
-f |
বিদ্যমান ফাইল ওভাররাইট করুন |
উদাহরণ:
# Create user:list command in app/command
php webman make:command user:list
# Create in plugin
php webman make:command user:list -p admin
# Custom path
php webman make:command user:list -P plugin/admin/app/command
# Overwrite existing file
php webman make:command user:list -f
তৈরি ফাইল স্ট্রাকচার:
<?php
namespace app\command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand('user:list', 'user list')]
class UserList extends Command
{
protected function configure(): void
{
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('<info>Hello</info> <comment>' . $this->getName() . '</comment>');
return self::SUCCESS;
}
}
নোট:
- ডিফল্টভাবে
app/command/-এ রাখা হয়
make:bootstrap
বুটস্ট্র্যাপ ইনিশিয়ালাইজেশন ক্লাস তৈরি করুন। প্রসেস স্টার্ট হলে start মেথড স্বয়ংক্রিয়ভাবে কল হয়, সাধারণত গ্লোবাল ইনিশিয়ালাইজেশনের জন্য।
ব্যবহার:
php webman make:bootstrap <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | বুটস্ট্র্যাপ ক্লাস নাম |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে তৈরি করুন |
--path |
-P |
টার্গেট ডিরেক্টরি (প্রজেক্ট রুটের সাপেক্ষে) |
--force |
-f |
বিদ্যমান ফাইল ওভাররাইট করুন |
উদাহরণ:
# Create MyBootstrap in app/bootstrap
php webman make:bootstrap MyBootstrap
# Create without auto-enabling
php webman make:bootstrap MyBootstrap no
# Create in plugin
php webman make:bootstrap MyBootstrap -p admin
# Custom path
php webman make:bootstrap MyBootstrap -P plugin/admin/app/bootstrap
# Overwrite existing file
php webman make:bootstrap MyBootstrap -f
তৈরি ফাইল স্ট্রাকচার:
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MyBootstrap implements Bootstrap
{
public static function start($worker)
{
$is_console = !$worker;
if ($is_console) {
return;
}
// ...
}
}
নোট:
- ডিফল্টভাবে
app/bootstrap/-এ রাখা হয় - সক্রিয় করার সময় ক্লাস
config/bootstrap.php-এ যোগ করা হয় (প্লাগইনের জন্যplugin/<plugin>/config/bootstrap.php)
make:process
কাস্টম প্রসেস ক্লাস তৈরি করুন এবং অটো-স্টার্টের জন্য config/process.php-এ লিখুন।
ব্যবহার:
php webman make:process <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্রসেস ক্লাস নাম (যেমন MyTcp, MyWebsocket) |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--plugin |
-p |
নির্দিষ্ট প্লাগইন ডিরেক্টরিতে তৈরি করুন |
--path |
-P |
টার্গেট ডিরেক্টরি (প্রজেক্ট রুটের সাপেক্ষে) |
--force |
-f |
বিদ্যমান ফাইল ওভাররাইট করুন |
উদাহরণ:
# Create in app/process
php webman make:process MyTcp
# Create in plugin
php webman make:process MyProcess -p admin
# Custom path
php webman make:process MyProcess -P plugin/admin/app/process
# Overwrite existing file
php webman make:process MyProcess -f
ইন্টারঅ্যাক্টিভ ফ্লো: ক্রমান্বয়ে জিজ্ঞাসা করে: পোর্টে লিসেন করবেন? → প্রোটোকল টাইপ (websocket/http/tcp/udp/unixsocket) → লিসেন অ্যাড্রেস (IP:port অথবা unix socket path) → প্রসেস কাউন্ট। HTTP প্রোটোকল বিল্ট-ইন বা কাস্টম মোডও জিজ্ঞাসা করে।
তৈরি ফাইল স্ট্রাকচার:
নন-লিসেনিং প্রসেস (শুধুমাত্র onWorkerStart):
<?php
namespace app\process;
use Workerman\Worker;
class MyProcess
{
public function onWorkerStart(Worker $worker)
{
// TODO: Write your business logic here.
}
}
TCP/WebSocket লিসেনিং প্রসেস সংশ্লিষ্ট onConnect, onMessage, onClose কলব্যাক টেমপ্লেট তৈরি করে।
নোট:
- ডিফল্টভাবে
app/process/-এ রাখা হয়; প্রসেস কনফিগconfig/process.php-এ লিখা হয় - কনফিগ কী ক্লাস নামের snake_case; ইতিমধ্যে থাকলে ব্যর্থ হয়
- HTTP বিল্ট-ইন মোড
app\process\Httpপ্রসেস ফাইল পুনরায় ব্যবহার করে, নতুন ফাইল তৈরি করে না - সমর্থিত প্রোটোকল: websocket, http, tcp, udp, unixsocket
বিল্ড এবং ডিপ্লয়মেন্ট
build:phar
ডিস্ট্রিবিউশন এবং ডিপ্লয়মেন্টের জন্য প্রজেক্টকে PHAR আর্কাইভ হিসেবে প্যাকেজ করুন।
ব্যবহার:
php webman build:phar
স্টার্ট:
বিল্ড ডিরেক্টরিতে যান এবং চালান
php webman.phar start
নোট:
-
প্যাকেজ করা প্রজেক্ট reload সমর্থন করে না; কোড আপডেট করতে restart ব্যবহার করুন
-
বড় ফাইল সাইজ এবং মেমরি ব্যবহার এড়াতে, config/plugin/webman/console/app.php-এ exclude_pattern এবং exclude_files কনফিগার করে অপ্রয়োজনীয় ফাইল বাদ দিন।
-
webman.phar চালানোর ফলে লগ এবং টেম্পোরারি ফাইলের জন্য একই অবস্থানে runtime ডিরেক্টরি তৈরি হয়।
-
আপনার প্রজেক্ট .env ফাইল ব্যবহার করলে, .env webman.phar-এর একই ডিরেক্টরিতে রাখুন।
-
webman.phar Windows-এ কাস্টম প্রসেস সমর্থন করে না
-
phar প্যাকেজের ভিতরে ইউজার-আপলোড করা ফাইল কখনই স্টোর করবেন না; phar:// দিয়ে ইউজার আপলোডে অপারেট করা বিপজ্জনক (phar ডিসিরিয়ালাইজেশন ভালনারেবিলিটি)। ইউজার আপলোড phar বাইরে আলাদাভাবে ডিস্কে স্টোর করতে হবে। নিচে দেখুন।
-
আপনার ব্যবসায় public ডিরেক্টরিতে ফাইল আপলোড করার প্রয়োজন হলে, public ডিরেক্টরি webman.phar-এর একই অবস্থানে এক্সট্রাক্ট করুন এবং config/app.php কনফিগার করুন:
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',public_path($relative_path) হেল্পার ফাংশন ব্যবহার করে প্রকৃত public ডিরেক্টরি পাথ পান।
build:bin
এম্বেডেড PHP রানটাইম সহ প্রজেক্টকে স্ট্যান্ডঅ্যালোন বাইনারি হিসেবে প্যাকেজ করুন। টার্গেট এনভায়রনমেন্টে PHP ইনস্টলেশনের প্রয়োজন নেই।
ব্যবহার:
php webman build:bin [version]
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
version |
No | PHP সংস্করণ (যেমন 8.1, 8.2), ডিফল্ট বর্তমান PHP সংস্করণ, সর্বনিম্ন 8.1 |
উদাহরণ:
# Use current PHP version
php webman build:bin
# Specify PHP 8.2
php webman build:bin 8.2
স্টার্ট:
বিল্ড ডিরেক্টরিতে যান এবং চালান
./webman.bin start
নোট:
- দৃঢ়ভাবে সুপারিশ: লোকাল PHP সংস্করণ বিল্ড সংস্করণের সাথে মিলতে হবে (যেমন PHP 8.1 লোকাল → 8.1 দিয়ে বিল্ড) সামঞ্জস্য সমস্যা এড়াতে
- বিল্ড PHP 8 সোর্স ডাউনলোড করে কিন্তু লোকালে ইনস্টল করে না; লোকাল PHP এনভায়রনমেন্টকে প্রভাবিত করে না
- webman.bin বর্তমানে শুধুমাত্র x86_64 Linux-এ চলে; macOS-এ সমর্থিত নয়
- প্যাকেজ করা প্রজেক্ট reload সমর্থন করে না; কোড আপডেট করতে restart ব্যবহার করুন
- .env ডিফল্টভাবে প্যাকেজ করা হয় না (config/plugin/webman/console/app.php-এ exclude_files দ্বারা নিয়ন্ত্রিত); স্টার্ট করার সময় .env webman.bin-এর একই ডিরেক্টরিতে রাখুন
- webman.bin ডিরেক্টরিতে লগ ফাইলের জন্য runtime ডিরেক্টরি তৈরি হয়
- webman.bin এক্সটার্নাল php.ini পড়ে না; কাস্টম php.ini সেটিংসের জন্য config/plugin/webman/console/app.php-এ custom_ini ব্যবহার করুন
- config/plugin/webman/console/app.php দিয়ে অপ্রয়োজনীয় ফাইল বাদ দিন বড় প্যাকেজ সাইজ এড়াতে
- বাইনারি বিল্ড Swoole করউটিন সমর্থন করে না
- বাইনারি প্যাকেজের ভিতরে ইউজার-আপলোড করা ফাইল কখনই স্টোর করবেন না; phar:// দিয়ে অপারেট করা বিপজ্জনক (phar ডিসিরিয়ালাইজেশন ভালনারেবিলিটি)। ইউজার আপলোড প্যাকেজ বাইরে আলাদাভাবে ডিস্কে স্টোর করতে হবে।
- আপনার ব্যবসায় public ডিরেক্টরিতে ফাইল আপলোড করার প্রয়োজন হলে, public ডিরেক্টরি webman.bin-এর একই অবস্থানে এক্সট্রাক্ট করুন এবং config/app.php নিচের মতো কনফিগার করুন, তারপর পুনরায় বিল্ড করুন:
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
install
Webman ফ্রেমওয়ার্ক ইনস্টলেশন স্ক্রিপ্ট এক্সিকিউট করুন (\Webman\Install::install() কল করে), প্রজেক্ট ইনিশিয়ালাইজেশনের জন্য।
ব্যবহার:
php webman install
ইউটিলিটি কমান্ড
version
workerman/webman-framework সংস্করণ প্রদর্শন করুন।
ব্যবহার:
php webman version
নোট: vendor/composer/installed.php থেকে সংস্করণ পড়ে; পড়তে না পারলে ব্যর্থতা ফেরত দেয়।
fix-disable-functions
php.ini-তে disable_functions ঠিক করুন, Webman-এর জন্য প্রয়োজনীয় ফাংশন সরান।
ব্যবহার:
php webman fix-disable-functions
নোট: disable_functions থেকে নিম্নলিখিত ফাংশন (এবং প্রিফিক্স ম্যাচ) সরায়: stream_socket_server, stream_socket_accept, stream_socket_client, pcntl_*, posix_*, proc_*, shell_exec, exec। php.ini না পাওয়া গেলে বা disable_functions খালি থাকলে বাদ দেয়। সরাসরি php.ini ফাইল পরিবর্তন করে; ব্যাকআপ সুপারিশ করা হয়।
route:list
টেবিল ফরম্যাটে সমস্ত নিবন্ধিত রুট তালিকাভুক্ত করুন।
ব্যবহার:
php webman route:list
আউটপুট উদাহরণ:
+-------+--------+-----------------------------------------------+------------+------+
| URI | Method | Callback | Middleware | Name |
+-------+--------+-----------------------------------------------+------------+------+
| /user | GET | ["app\\controller\\UserController","index"] | null | |
| /api | POST | Closure | ["Auth"] | api |
+-------+--------+-----------------------------------------------+------------+------+
আউটপুট কলাম: URI, Method, Callback, Middleware, Name। Closure কলব্যাক "Closure" হিসেবে প্রদর্শিত হয়।
অ্যাপ প্লাগইন ব্যবস্থাপনা (app-plugin:*)
app-plugin:create
নতুন অ্যাপ প্লাগইন তৈরি করুন, plugin/<name>-এর অধীনে সম্পূর্ণ ডিরেক্টরি স্ট্রাকচার এবং বেস ফাইল জেনারেট করুন।
ব্যবহার:
php webman app-plugin:create <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন নাম; অবশ্যই [a-zA-Z0-9][a-zA-Z0-9_-]* মিলতে হবে, / বা \ থাকতে পারবে না |
উদাহরণ:
# Create app plugin named foo
php webman app-plugin:create foo
# Create plugin with hyphen
php webman app-plugin:create my-app
তৈরি ডিরেক্টরি স্ট্রাকচার:
plugin/<name>/
├── app/
│ ├── controller/IndexController.php
│ ├── model/
│ ├── middleware/
│ ├── view/index/index.html
│ └── functions.php
├── config/ # app.php, route.php, menu.php, etc.
├── api/Install.php # Install/uninstall/update hooks
├── public/
└── install.sql
নোট:
- প্লাগইন
plugin/<name>/-এর অধীনে তৈরি হয়; ডিরেক্টরি ইতিমধ্যে থাকলে ব্যর্থ হয়
app-plugin:install
অ্যাপ প্লাগইন ইনস্টল করুন, plugin/<name>/api/Install::install($version) এক্সিকিউট করুন।
ব্যবহার:
php webman app-plugin:install <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন নাম; অবশ্যই [a-zA-Z0-9][a-zA-Z0-9_-]* মিলতে হবে |
উদাহরণ:
php webman app-plugin:install foo
app-plugin:uninstall
অ্যাপ প্লাগইন আনইনস্টল করুন, plugin/<name>/api/Install::uninstall($version) এক্সিকিউট করুন।
ব্যবহার:
php webman app-plugin:uninstall <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন নাম |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--yes |
-y |
নিশ্চিতকরণ এড়িয়ে সরাসরি এক্সিকিউট করুন |
উদাহরণ:
php webman app-plugin:uninstall foo
php webman app-plugin:uninstall foo -y
app-plugin:update
অ্যাপ প্লাগইন আপডেট করুন, ক্রমান্বয়ে Install::beforeUpdate($from, $to) এবং Install::update($from, $to, $context) এক্সিকিউট করুন।
ব্যবহার:
php webman app-plugin:update <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | Plugin name |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--from |
-f |
সংস্করণ থেকে, ডিফল্ট বর্তমান সংস্করণ |
--to |
-t |
সংস্করণ পর্যন্ত, ডিফল্ট বর্তমান সংস্করণ |
উদাহরণ:
php webman app-plugin:update foo
php webman app-plugin:update foo --from 1.0.0 --to 1.1.0
app-plugin:zip
অ্যাপ প্লাগইনকে ZIP ফাইল হিসেবে প্যাকেজ করুন, আউটপুট plugin/<name>.zip-এ।
ব্যবহার:
php webman app-plugin:zip <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | Plugin name |
উদাহরণ:
php webman app-plugin:zip foo
নোট:
- স্বয়ংক্রিয়ভাবে
node_modules,.git,.idea,.vscode,__pycache__ইত্যাদি বাদ দেয়
প্লাগইন ব্যবস্থাপনা (plugin:*)
plugin:create
নতুন Webman প্লাগইন তৈরি করুন (Composer প্যাকেজ ফর্ম), config/plugin/<name> কনফিগ ডিরেক্টরি এবং vendor/<name> প্লাগইন সোর্স ডিরেক্টরি জেনারেট করুন।
ব্যবহার:
php webman plugin:create <name>
php webman plugin:create --name <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন প্যাকেজ নাম vendor/package ফরম্যাটে (যেমন foo/my-admin); Composer প্যাকেজ নেমিং অনুসরণ করতে হবে |
উদাহরণ:
php webman plugin:create foo/my-admin
php webman plugin:create --name foo/my-admin
তৈরি স্ট্রাকচার:
config/plugin/<name>/app.php: প্লাগইন কনফিগ (enableসুইচ সহ)vendor/<name>/composer.json: প্লাগইন প্যাকেজ সংজ্ঞাvendor/<name>/src/: প্লাগইন সোর্স ডিরেক্টরি- প্রজেক্ট রুট
composer.json-এ স্বয়ংক্রিয়ভাবে PSR-4 ম্যাপিং যোগ করে - অটোলোড রিফ্রেশ করতে
composer dumpautoloadচালায়
নোট:
- নাম অবশ্যই
vendor/packageফরম্যাটে হবে: ছোট অক্ষর, সংখ্যা,-,_,., এবং অবশ্যই একটি/থাকতে হবে config/plugin/<name>বাvendor/<name>ইতিমধ্যে থাকলে ব্যর্থ হয়- আর্গুমেন্ট এবং
--nameউভয় ভিন্ন মান দিয়ে দিলে এরর
plugin:install
প্লাগইন ইনস্টলেশন স্ক্রিপ্ট এক্সিকিউট করুন (Install::install()), প্লাগইন রিসোর্স প্রজেক্ট ডিরেক্টরিতে কপি করুন।
ব্যবহার:
php webman plugin:install <name>
php webman plugin:install --name <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন প্যাকেজ নাম vendor/package ফরম্যাটে (যেমন foo/my-admin) |
অপশন:
| Option | Description |
|---|---|
--name |
অপশন হিসেবে প্লাগইন নাম নির্দিষ্ট করুন; এটি বা আর্গুমেন্ট ব্যবহার করুন |
উদাহরণ:
php webman plugin:install foo/my-admin
php webman plugin:install --name foo/my-admin
plugin:uninstall
প্লাগইন আনইনস্টলেশন স্ক্রিপ্ট এক্সিকিউট করুন (Install::uninstall()), প্রজেক্ট থেকে প্লাগইন রিসোর্স সরান।
ব্যবহার:
php webman plugin:uninstall <name>
php webman plugin:uninstall --name <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন প্যাকেজ নাম vendor/package ফরম্যাটে |
অপশন:
| Option | Description |
|---|---|
--name |
অপশন হিসেবে প্লাগইন নাম নির্দিষ্ট করুন; এটি বা আর্গুমেন্ট ব্যবহার করুন |
উদাহরণ:
php webman plugin:uninstall foo/my-admin
plugin:enable
প্লাগইন সক্রিয় করুন, config/plugin/<name>/app.php-এ enable true সেট করুন।
ব্যবহার:
php webman plugin:enable <name>
php webman plugin:enable --name <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন প্যাকেজ নাম vendor/package ফরম্যাটে |
অপশন:
| Option | Description |
|---|---|
--name |
অপশন হিসেবে প্লাগইন নাম নির্দিষ্ট করুন; এটি বা আর্গুমেন্ট ব্যবহার করুন |
উদাহরণ:
php webman plugin:enable foo/my-admin
plugin:disable
প্লাগইন নিষ্ক্রিয় করুন, config/plugin/<name>/app.php-এ enable false সেট করুন।
ব্যবহার:
php webman plugin:disable <name>
php webman plugin:disable --name <name>
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন প্যাকেজ নাম vendor/package ফরম্যাটে |
অপশন:
| Option | Description |
|---|---|
--name |
অপশন হিসেবে প্লাগইন নাম নির্দিষ্ট করুন; এটি বা আর্গুমেন্ট ব্যবহার করুন |
উদাহরণ:
php webman plugin:disable foo/my-admin
plugin:export
প্রজেক্ট থেকে প্লাগইন কনফিগ এবং নির্দিষ্ট ডিরেক্টরি vendor/<name>/src/-এ এক্সপোর্ট করুন, এবং প্যাকেজিং এবং রিলিজের জন্য Install.php জেনারেট করুন।
ব্যবহার:
php webman plugin:export <name> [--source=path]...
php webman plugin:export --name <name> [--source=path]...
আর্গুমেন্ট:
| Argument | Required | Description |
|---|---|---|
name |
Yes | প্লাগইন প্যাকেজ নাম vendor/package ফরম্যাটে |
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--name |
অপশন হিসেবে প্লাগইন নাম নির্দিষ্ট করুন; এটি বা আর্গুমেন্ট ব্যবহার করুন | |
--source |
-s |
এক্সপোর্ট করার পাথ (প্রজেক্ট রুটের সাপেক্ষে); একাধিকবার নির্দিষ্ট করা যেতে পারে |
উদাহরণ:
# Export plugin, default includes config/plugin/<name>
php webman plugin:export foo/my-admin
# Additionally export app, config, etc.
php webman plugin:export foo/my-admin --source app --source config
php webman plugin:export --name foo/my-admin -s app -s config
নোট:
- প্লাগইন নাম অবশ্যই Composer প্যাকেজ নেমিং অনুসরণ করবে (
vendor/package) config/plugin/<name>থাকলে এবং--source-এ না থাকলে, স্বয়ংক্রিয়ভাবে এক্সপোর্ট লিস্টে যোগ করা হয়- এক্সপোর্ট করা
Install.php-এpathRelationথাকেplugin:install/plugin:uninstallব্যবহারের জন্য plugin:installএবংplugin:uninstall-এর জন্য প্লাগইনvendor/<name>-এ থাকা,Installক্লাস এবংWEBMAN_PLUGINকনস্ট্যান্ট থাকা প্রয়োজন
সেবা ব্যবস্থাপনা
start
Webman ওয়ার্কার প্রসেস চালু করুন। ডিফল্ট DEBUG মোড (ফোরগ্রাউন্ড)।
ব্যবহার:
php webman start
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--daemon |
-d |
DAEMON মোডে চালু করুন (ব্যাকগ্রাউন্ড) |
stop
Webman ওয়ার্কার প্রসেস বন্ধ করুন।
ব্যবহার:
php webman stop
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--graceful |
-g |
গ্রেসফুল স্টপ; বের হওয়ার আগে বর্তমান রিকোয়েস্ট সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন |
restart
Webman ওয়ার্কার প্রসেস পুনরায় চালু করুন।
ব্যবহার:
php webman restart
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--daemon |
-d |
রিস্টার্টের পর DAEMON মোডে চালান |
--graceful |
-g |
রিস্টার্টের আগে গ্রেসফুল স্টপ |
reload
ডাউনটাইম ছাড়াই কোড রিলোড করুন। কোড আপডেটের পর হট-রিলোডের জন্য।
ব্যবহার:
php webman reload
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--graceful |
-g |
গ্রেসফুল রিলোড; রিলোডের আগে বর্তমান রিকোয়েস্ট সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন |
status
ওয়ার্কার প্রসেস রান স্ট্যাটাস দেখুন।
ব্যবহার:
php webman status
অপশন:
| Option | Shortcut | Description |
|---|---|---|
--live |
-d |
বিস্তারিত দেখান (লাইভ স্ট্যাটাস) |
connections
ওয়ার্কার প্রসেস সংযোগ তথ্য পান।
ব্যবহার:
php webman connections