创建并运行 Workerman 项目
什么是 Workerman?
Workerman 是一个高性能的 PHP 异步网络通信库,专为开发高并发、高性能的网络应用而设计。它可以用于构建 Web 服务器、WebSocket 服务器、TCP/UDP 服务器等,适用于实时聊天、游戏服务器、物联网等场景。Workerman 拥有轻量级、易用、高效等特点,使得开发者可以轻松地实现复杂的网络应用。
Workerman 的主要特性和优势
- 高性能:基于事件驱动和异步非阻塞 I/O,能够处理大量并发连接。
- 多协议支持:支持 HTTP、WebSocket、TCP、UDP 等多种网络协议。
- 易于使用:提供简单易用的 API,使开发者能够快速上手。
- 灵活扩展:可以通过插件和扩展实现更多功能。
- 强大的社区支持:拥有活跃的开发者社区和丰富的文档资源。
Workerman 可以帮助开发者快速构建高性能的网络应用,适用于各种需要高并发处理的场景。
使用 Workerman 创建并运行一个简单的 Web 服务器
在这篇文章中,我们将介绍如何在 ServBay 环境中使用 Workerman 创建并运行一个简单的 Web 服务器。我们将演示如何安装 Workerman、编写基本的服务器代码,并运行服务器。
TIP
ServBay 建议开发者把网站放置在/Applications/ServBay/www
目录下,以方便管理。
安装 Workerman
安装 Composer
ServBay 出厂时已经自带 Composer,无需单独安装。
创建项目目录
创建一个新的项目目录,并进入该目录:
bashcd /Applications/ServBay/www mkdir servbay-workerman-app cd servbay-workerman-app
1
2
3安装 Workerman
使用 Composer 安装 Workerman:
bashcomposer require workerman/workerman
1
编写 Web 服务器代码
在项目目录下创建一个 server.php
文件,并添加以下代码:
<?php
require __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// 创建一个 Web 服务器实例,监听 8080 端口
$webServer = new Worker('http://0.0.0.0:8080');
// 启动 4 个进程来处理请求
$webServer->count = 4;
// 定义请求处理逻辑
$webServer->onMessage = function($connection, $request) {
$connection->send('Hello ServBay!');
};
// 运行所有的 Worker 实例
Worker::runAll();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
运行 Web 服务器
在项目目录下运行以下命令启动 Web 服务器:
php server.php start
启动后,您可以在浏览器中访问 http://localhost:8080
,您会看到页面输出 Hello ServBay!
。
使用 Workerman 创建 WebSocket 服务器
除了 Web 服务器,Workerman 还可以用于创建 WebSocket 服务器。以下是一个简单的 WebSocket 服务器示例。
创建 WebSocket 服务器代码
在项目目录下创建一个
websocket_server.php
文件,并添加以下代码:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // 创建一个 WebSocket 服务器实例,监听 8081 端口 $wsServer = new Worker('websocket://0.0.0.0:8081'); // 启动 4 个进程来处理请求 $wsServer->count = 4; // 定义连接建立时的处理逻辑 $wsServer->onConnect = function($connection) { echo "New connection\n"; }; // 定义消息接收时的处理逻辑 $wsServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // 定义连接关闭时的处理逻辑 $wsServer->onClose = function($connection) { echo "Connection closed\n"; }; // 运行所有的 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
28运行 WebSocket 服务器
在项目目录下运行以下命令启动 WebSocket 服务器:
bashphp websocket_server.php start
1启动后,您可以使用 WebSocket 客户端(如浏览器中的 WebSocket 调试工具)连接到
ws://localhost:8081
,并发送消息,服务器将会回显收到的消息。
使用 Workerman 创建 TCP 服务器
Workerman 还可以用于创建 TCP 服务器。以下是一个简单的 TCP 服务器示例。
创建 TCP 服务器代码
在项目目录下创建一个
tcp_server.php
文件,并添加以下代码:php<?php require __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; // 创建一个 TCP 服务器实例,监听 8082 端口 $tcpServer = new Worker('tcp://0.0.0.0:8082'); // 启动 4 个进程来处理请求 $tcpServer->count = 4; // 定义连接建立时的处理逻辑 $tcpServer->onConnect = function($connection) { echo "New connection\n"; }; // 定义消息接收时的处理逻辑 $tcpServer->onMessage = function($connection, $data) { $connection->send('Received: ' . $data); }; // 定义连接关闭时的处理逻辑 $tcpServer->onClose = function($connection) { echo "Connection closed\n"; }; // 运行所有的 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
28运行 TCP 服务器
在项目目录下运行以下命令启动 TCP 服务器:
bashphp tcp_server.php start
1启动后,您可以使用 TCP 客户端(如
telnet
或nc
命令)连接到localhost:8082
,并发送消息,服务器将会回显收到的消息。
总结
通过以上步骤,您成功使用ServBay创建并运行了一个 Workerman 项目,并使用 Workerman 提供的功能来创建 Web 服务器、WebSocket 服务器和 TCP 服务器。Workerman 的高性能和易用性,使得它非常适合用于构建高并发、高性能的网络应用。希望这篇文章能帮助您快速上手 Workerman,并应用于您的项目中。