Tạo và Chạy Dự Án Webman
Webman là gì?
Webman là một framework PHP web bất đồng bộ hiệu năng cao dựa trên Workerman, được thiết kế để xây dựng các ứng dụng web có khả năng xử lý cao và hiệu năng cao. Khác với các framework đồng bộ truyền thống, Webman sử dụng kiến trúc hướng sự kiện và I/O không đồng bộ, giúp nó hoạt động xuất sắc khi xử lý nhiều yêu cầu đồng thời. Webman cung cấp API đơn giản và dễ sử dụng, cùng với các cơ chế mở rộng linh hoạt, rất phù hợp cho việc xây dựng các ứng dụng thời gian thực và dịch vụ API.
Các đặc điểm và ưu điểm chính của Webman
- Hiệu năng cao: Dựa trên kiến trúc hướng sự kiện và I/O không đồng bộ, có thể xử lý nhiều yêu cầu đồng thời.
- Dễ sử dụng: Cung cấp API đơn giản và nhiều tính năng, cho phép các nhà phát triển dễ dàng bắt đầu.
- Hỗ trợ nhiều giao thức: Hỗ trợ các giao thức như HTTP, WebSocket, phù hợp với nhiều tình huống ứng dụng.
- Mở rộng linh hoạt: Có thể mở rộng tính năng thông qua cơ chế plugin và middleware.
- Hỗ trợ cộng đồng mạnh mẽ: Có cộng đồng phát triển sôi nổi và tài liệu phong phú.
Webman có thể giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng web và dịch vụ API hiệu năng cao, phù hợp với nhiều tình huống cần xử lý nhiều yêu cầu đồng thời.
Sử dụng Webman để tạo và chạy một dự án web đơn giản
Trong bài viết này, chúng tôi sẽ giới thiệu cách sử dụng Webman để tạo và chạy một dự án web đơn giản trong môi trường ServBay. Chúng tôi sẽ hướng dẫn cách cài đặt Webman, viết các đoạn mã route và controller cơ bản, và chạy dự án.
TIP
ServBay khuyến nghị các nhà phát triển đặt website trong thư mục /Applications/ServBay/www
để dễ quản lý.
Cài đặt Webman
Cài đặt Composer
ServBay đã có sẵn Composer, không cần cài đặt riêng.
Tạo thư mục dự án
Truy cập vào thư mục www của ServBay:
bashcd /Applications/ServBay/www
1Cài đặt Webman
Sử dụng Composer để cài đặt Webman:
bashcomposer create-project workerman/webman servbay-webman-app cd servbay-webman-app
1
2Cài đặt các thành phần cần thiết
Cài đặt Illuminate database, pagination, events và Symfony VarDumper:
bashcomposer require -W illuminate/database illuminate/redis illuminate/pagination illuminate/events symfony/var-dumper
1
Viết mã cho dự án web
Cấu hình route
Thêm các đoạn mã sau vào file
config/route.php
để định nghĩa các route cơ bản: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
12Tạo controller
Trong thư mục
app/controller
, tạo các fileIndexController.php
,CacheController.php
vàDatabaseController.php
, và thêm các đoạn mã sau:File
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
11File
CacheController.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
25File
DatabaseController.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
38Cấu hình kết nối cơ sở dữ liệu
Cấu hình thông tin kết nối MySQL và PostgreSQL trong file
config/database.php
: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
Chạy dự án web
Trong thư mục dự án, chạy lệnh sau để khởi động dự án Webman:
php start.php start
Sau khi khởi động, bạn có thể truy cập các URL sau trong trình duyệt:
http://localhost:8787
: Bạn sẽ thấy trang hiển thịHello ServBay!
.http://localhost:8787/memcached
: Bạn sẽ thấy trang hiển thịHello Memcached!
.http://localhost:8787/redis
: Bạn sẽ thấy trang hiển thịHello Redis!
.http://localhost:8787/mysql-add
: Bạn sẽ thấy trang hiển thịUser added
và thêm một người dùng vào cơ sở dữ liệu.http://localhost:8787/mysql
: Bạn sẽ thấy danh sách người dùng trong cơ sở dữ liệu.http://localhost:8787/pgsql-add
: Bạn sẽ thấy trang hiển thịUser added
và thêm một người dùng vào cơ sở dữ liệu.http://localhost:8787/pgsql
: Bạn sẽ thấy danh sách người dùng trong cơ sở dữ liệu.
Tổng kết
Qua các bước trên, bạn đã thành công tạo và chạy một dự án Webman thông qua ServBay, sử dụng các tính năng của Webman để quản lý và truy cập dự án của bạn, kết nối với nhiều cơ sở dữ liệu và gọi dữ liệu. Webman với hiệu năng cao và dễ sử dụng, rất phù hợp để xây dựng các ứng dụng web và dịch vụ API có khả năng xử lý nhiều yêu cầu đồng thời. Hy vọng rằng bài viết này sẽ giúp bạn nhanh chóng làm quen với Webman và áp dụng vào các dự án của bạn.