什麽是 Webman?
Webman 是一個基於 Workerman 的高效能 PHP 異步 Web 框架,專為構建高並行、高效能的 Web 套用而設計。與傳統的同步阻塞框架不同,Webman 采用事件驅動和異步非阻塞 I/O,使其在處理大量並行請求時表現出色。Webman 提供了簡潔易用的 API 和靈活的擴充套件機制,非常適合用於構建即時套用、API 服務等。
Webman 的主要特性和優勢
高效能 :基於事件驅動和異步非阻塞 I/O,能夠處理大量並行請求。
易於使用 :提供簡潔的 API 和豐富的功能,開發者可以快速上手。
多協定支持 :支持 HTTP、WebSocket 等多種協定,適用於多種套用場景。
靈活擴充套件 :可以透過外掛程式和中介軟體機制實作功能擴充套件。
強大的社群支持 :擁有活躍的開發者社群和豐富的文件資源。
Webman 可以幫助開發者快速構建高效能的 Web 套用和 API 服務,適用於各種需要高並行處理的場景。
使用 Webman 建立並執行一個簡單的 Web 計畫
在這篇文章中,我們將介紹如何在 ServBay 環境中使用 Webman 建立並執行一個簡單的 Web 計畫。我們將演示如何安裝 Webman、編寫基本的路由和控制器程式碼,並執行計畫。
ServBay 建議開發者把網站放置在
/Applications/ServBay/www
目錄下,以方便管理。
安裝 Webman
安裝 Composer
ServBay 出廠時已經 內建 Composer ,無需單獨安裝。
建立計畫目錄
進入ServBay的www目錄:
cd /Applications/ServBay/www
安裝 Webman
使用 Composer 安裝 Webman:
composer create-project workerman/webman servbay-webman-app
cd servbay-webman-app
安裝必要的元件
安裝 Illuminate 資料庫、分頁、事件和 Symfony VarDumper:
composer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper
編寫 Web 計畫程式碼
配置路由
在
config/route.php
檔中添加以下程式碼,以定義基本的路由:
useWebman\Route;
useapp\controller\IndexController;
useapp\controller\CacheController;
useapp\controller\DatabaseController;
Route::any('/', [IndexController:: class, 'index']);
Route::any('/memcached', [CacheController:: class, 'memcached']);
Route::any('/redis', [CacheController:: class, 'redis']);
Route::any('/mysql-add', [DatabaseController:: class, 'mysqlAdd']);
Route::any('/mysql', [DatabaseController:: class, 'mysqlGet']);
Route::any('/pgsql-add', [DatabaseController:: class, 'pgsqlAdd']);
Route::any('/pgsql', [DatabaseController:: class, 'pgsqlGet']);
建立控制器
在
app/controller
目錄下建立
IndexController.php
、
CacheController.php
和
DatabaseController.php
檔,並添加以下程式碼:
IndexController.php
檔:
namespaceapp\controller;
usesupport\Request;
classIndexController
{
publicfunctionindex(Request $request)
{
return response('Hello ServBay!');
}
}
CacheController.php
檔:
namespaceapp\controller;
usesupport\Request;
usesupport\Response;
useMemcached;
usesupport\Redis;
classCacheController
{
publicfunctionmemcached(Request $request): Response
{
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
$memcached->set('key', 'Hello Memcached!', 60);
$value = $memcached->get('key');
return response($value);
}
publicfunctionredis(Request $request): Response
{
Redis::set('key', 'Hello Redis!');
$value = Redis::get('key');
return response($value);
}
}
DatabaseController.php
檔:
namespaceapp\controller;
usesupport\Request;
usesupport\Response;
usesupport\Db;
classDatabaseController
{
publicfunctionmysqlAdd(Request $request): Response
{
DB::connection('mysql')->table('users')->insert([
'name' => 'Webman',
'email' => '[email protected]',
]);
return response('User added');
}
publicfunctionmysqlGet(Request $request): Response
{
$users = DB::connection('mysql')->table('users')->get();
return response(json_encode($users));
}
publicfunctionpgsqlAdd(Request $request): Response
{
DB::connection('pgsql')->table('users')->insert([
'name' => 'Webman',
'email' => '[email protected]',
]);
return response('User added');
}
publicfunctionpgsqlGet(Request $request): Response
{
$users = DB::connection('pgsql')->table('users')->get();
return response(json_encode($users));
}
}
配置資料庫連線
在
config/database.php
檔中配置 MySQL 和 PostgreSQL 的連線資訊:
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'webman_app',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => '127.0.0.1',
'port' => 5432,
'database' => 'webman_app',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
],
];
執行 Web 計畫
在計畫目錄下執行以下命令啟動 Webman 計畫:
php start.php start
啟動後,您可以在瀏覽器中存取以下 URL:
http://localhost:8787
:您會看到頁面輸出
Hello ServBay!
。
http://localhost:8787/memcached
:您會看到頁面輸出
Hello Memcached!
。
http://localhost:8787/redis
:您會看到頁面輸出
Hello Redis!
。
http://localhost:8787/mysql-add
:您會看到頁面輸出
User added
,並在資料庫中添加一個使用者。
http://localhost:8787/mysql
:您會看到資料庫中的使用者列表。
http://localhost:8787/pgsql-add
:您會看到頁面輸出
User added
,並在資料庫中添加一個使用者。
http://localhost:8787/pgsql
:您會看到資料庫中的使用者列表。
總結
透過以上步驟,您成功透過ServBay建立並執行了一個 Webman 計畫,並使用 Webman 提供的功能來管理和存取您的計畫,同時連線了多種資料庫並呼叫數據。Webman 的高效能和易用性,使得它非常適合用於構建高並行、高效能的 Web 套用和 API 服務。希望這篇文章能幫助您快速上手 Webman,並套用於您的計畫中。