創建並運行 Webman 專案
什麼是 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、編寫基本的路由和控制器代碼,並運行專案。
TIP
ServBay 建議開發者把網站放置在/Applications/ServBay/www
目錄下,以方便管理。
安裝 Webman
安裝 Composer
ServBay 出廠時已有自帶 Composer,無需單獨安裝。
創建專案目錄
進入ServBay的www目錄:
bashcd /Applications/ServBay/www
1安裝 Webman
使用 Composer 安裝 Webman:
bashcomposer create-project workerman/webman servbay-webman-app cd servbay-webman-app
1
2安裝必要的組件
安裝 Illuminate 資料庫、分頁、事件和 Symfony VarDumper:
bashcomposer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper
1
編寫 Web 專案代碼
配置路由
在
config/route.php
文件中添加以下代碼,以定義基本的路由:phpuse Webman\Route; use app\controller\IndexController; use app\controller\CacheController; use app\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']);
1
2
3
4
5
6
7
8
9
10
11
12創建控制器
在
app/controller
目錄下創建IndexController.php
、CacheController.php
和DatabaseController.php
文件,並添加以下代碼:IndexController.php
文件:phpnamespace app\controller; use support\Request; class IndexController { public function index(Request $request) { return response('Hello ServBay!'); } }
1
2
3
4
5
6
7
8
9
10
11CacheController.php
文件:phpnamespace app\controller; use support\Request; use support\Response; use Memcached; use support\Redis; class CacheController { public function memcached(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); } public function redis(Request $request): Response { Redis::set('key', 'Hello Redis!'); $value = Redis::get('key'); return response($value); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25DatabaseController.php
文件:phpnamespace app\controller; use support\Request; use support\Response; use support\Db; class DatabaseController { public function mysqlAdd(Request $request): Response { DB::connection('mysql')->table('users')->insert([ 'name' => 'Webman', 'email' => '[email protected]', ]); return response('User added'); } public function mysqlGet(Request $request): Response { $users = DB::connection('mysql')->table('users')->get(); return response(json_encode($users)); } public function pgsqlAdd(Request $request): Response { DB::connection('pgsql')->table('users')->insert([ 'name' => 'Webman', 'email' => '[email protected]', ]); return response('User added'); } public function pgsqlGet(Request $request): Response { $users = DB::connection('pgsql')->table('users')->get(); return response(json_encode($users)); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38配置資料庫連接
在
config/database.php
文件中配置 MySQL 和 PostgreSQL 的連接信息:phpreturn [ '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', ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
運行 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,並應用於您的專案中。