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
1Webmanのインストール
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の迅速な習得とプロジェクトへの応用に役立つことを願っています。