Tạo và chạy dự án Workerman
Workerman là gì?
Workerman là một thư viện giao tiếp mạng bất đồng bộ hiệu suất cao cho PHP, được thiết kế để phát triển các ứng dụng mạng có độ đồng bộ cao và hiệu suất cao. Nó có thể được sử dụng để xây dựng máy chủ Web, máy chủ WebSocket, máy chủ TCP/UDP, và nhiều hơn nữa, thích hợp cho các ứng dụng như chat trực tuyến, máy chủ trò chơi, IoT, v.v. Workerman nổi bật với tính nhẹ nhàng, dễ sử dụng và hiệu suất cao, giúp các nhà phát triển dễ dàng triển khai các ứng dụng mạng phức tạp.
Các tính năng và lợi ích chính của Workerman
- Hiệu suất cao: Dựa trên sự kiện điều khiển và I/O bất đồng bộ không chặn, có thể xử lý số lượng lớn kết nối đồng thời.
- Hỗ trợ đa giao thức: Hỗ trợ nhiều giao thức mạng như HTTP, WebSocket, TCP, UDP.
- Dễ sử dụng: Cung cấp API đơn giản và dễ sử dụng, giúp nhà phát triển nhanh chóng làm quen.
- Mở rộng linh hoạt: Có thể mở rộng và tùy chỉnh chức năng thông qua các plugin và tiện ích mở rộng.
- Hỗ trợ cộng đồng mạnh mẽ: Có cộng đồng phát triển viên hoạt động và tài liệu phong phú.
Workerman giúp các nhà phát triển nhanh chóng xây dựng các ứng dụng mạng hiệu suất cao, phù hợp cho các kịch bản yêu cầu xử lý đồng thời cao.
Tạo và chạy một máy chủ Web đơn giản với Workerman
Trong bài viết này, chúng ta sẽ hướng dẫn cách sử dụng Workerman để tạo và chạy một máy chủ Web đơn giản trong môi trường ServBay. Chúng ta sẽ hướng dẫn cách cài đặt Workerman, viết mã máy chủ cơ bản và chạy máy chủ.
TIP
ServBay khuyến nghị nhà phát triển đặt trang web trong thư mục /Applications/ServBay/www
để dễ dàng quản lý.
Cài đặt Workerman
Cài đặt Composer
ServBay đã tích hợp sẵn Composer, không cần cài đặt riêng.
Tạo thư mục dự án
Tạo một thư mục dự án mới và chuyển vào thư mục đó:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3Cài đặt Workerman
Sử dụng Composer để cài đặt Workerman:
bashcomposer require workerman/workerman
1
Viết mã máy chủ Web
Tạo một tệp server.php
trong thư mục dự án và thêm mã sau:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Tạo một máy chủ Web, lắng nghe trên cổng 8080
$webServer = new Worker('http://0.0.0.0:8080');
// Khởi động 4 tiến trình để xử lý yêu cầu
$webServer->count = 4;
// Định nghĩa logic xử lý yêu cầu
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// Chạy tất cả các Worker
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Chạy máy chủ Web
Chạy lệnh sau trong thư mục dự án để khởi động máy chủ Web:
php server.php start
Sau khi khởi động, bạn có thể truy cập http://localhost:8080
trong trình duyệt, bạn sẽ thấy trang web hiển thị Hello ServBay!
.
Tạo máy chủ WebSocket với Workerman
Ngoài máy chủ Web, Workerman còn có thể được sử dụng để tạo máy chủ WebSocket. Dưới đây là một ví dụ đơn giản về máy chủ WebSocket.
Viết mã máy chủ WebSocket
Tạo một tệp
websocket_server.php
trong thư mục dự án và thêm mã sau:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Tạo một máy chủ WebSocket, lắng nghe trên cổng 8081 $wsServer = new Worker('websocket://0.0.0.0:8081'); // Khởi động 4 tiến trình để xử lý yêu cầu $wsServer->count = 4; // Định nghĩa logic xử lý khi kết nối được thiết lập $wsServer->onConnect = function($connection) { echo "New connection\n"; }; // Định nghĩa logic xử lý khi nhận được tin nhắn $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Định nghĩa logic xử lý khi kết nối bị đóng $wsServer->onClose = function($connection) { echo "Connection closed\n"; }; // Chạy tất cả các Worker Worker::runAll();
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
28Chạy máy chủ WebSocket
Chạy lệnh sau trong thư mục dự án để khởi động máy chủ WebSocket:
bashphp websocket_server.php start
1Sau khi khởi động, bạn có thể sử dụng một khách hàng WebSocket (như công cụ debug WebSocket trong trình duyệt) để kết nối đến
ws://localhost:8081
và gửi tin nhắn, máy chủ sẽ phản hồi lại tin nhắn đã nhận được.
Tạo máy chủ TCP với Workerman
Workerman còn có thể được sử dụng để tạo máy chủ TCP. Dưới đây là một ví dụ đơn giản về máy chủ TCP.
Viết mã máy chủ TCP
Tạo một tệp
tcp_server.php
trong thư mục dự án và thêm mã sau:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // Tạo một máy chủ TCP, lắng nghe trên cổng 8082 $tcpServer = new Worker('tcp://0.0.0.0:8082'); // Khởi động 4 tiến trình để xử lý yêu cầu $tcpServer->count = 4; // Định nghĩa logic xử lý khi kết nối được thiết lập $tcpServer->onConnect = function($connection) { echo "New connection\n"; }; // Định nghĩa logic xử lý khi nhận được tin nhắn $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // Định nghĩa logic xử lý khi kết nối bị đóng $tcpServer->onClose = function($connection) { echo "Connection closed\n"; }; // Chạy tất cả các Worker Worker::runAll();
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
28Chạy máy chủ TCP
Chạy lệnh sau trong thư mục dự án để khởi động máy chủ TCP:
bashphp tcp_server.php start
1Sau khi khởi động, bạn có thể sử dụng một khách hàng TCP (như lệnh
telnet
hoặcnc
) để kết nối đếnlocalhost:8082
và gửi tin nhắn, máy chủ sẽ phản hồi lại tin nhắn đã nhận được.
Tổng kết
Bằng cách làm theo các bước trên, bạn đã thành công sử dụng ServBay để tạo và chạy một dự án Workerman, và sử dụng các tính năng của Workerman để tạo máy chủ Web, máy chủ WebSocket và máy chủ TCP. Hiệu suất cao và tính dễ sử dụng của Workerman làm cho nó rất phù hợp để xây dựng các ứng dụng mạng có độ đồng bộ cao và hiệu suất cao. Hy vọng bài viết này sẽ giúp bạn nhanh chóng làm quen với Workerman và áp dụng vào dự án của mình.