Workerman 是一个非常高效的 PHP 网络框架,适合构建高并发的实时应用。在开始使用 Workerman 时,首先需要完成环境搭建与安装,并配置工作目录、日志等。通过 Composer 安装 Workerman,确保你的 PHP 环境与所需扩展的安装,接着你可以通过 PHP 代码来配置服务并启动。完成这些步骤后,你就可以开始构建自己的高性能网络服务了。
1. 安装 Workerman
(1) 使用 Composer 安装 Workerman
Composer 是 PHP 的依赖管理工具,可以轻松安装和管理项目的依赖包。要安装 Workerman,首先需要确保已经安装了 Composer。然后可以通过 Composer 安装 Workerman。
- 安装 Composer(如果尚未安装)
如果尚未安装 Composer,可以使用以下命令来安装:
curl -sS https://getcomposer.org/installer | php
然后将 composer.phar
文件移动到系统的环境路径中(如 /usr/local/bin
)。
- 通过 Composer 安装 Workerman 进入你的项目目录,使用 Composer 安装 Workerman:
composer require workerman/workerman
或者如果你希望全局安装 Workerman,可以使用以下命令:
composer global require workerman/workerman
这将会把 Workerman 安装到项目目录的 vendor
目录下。
(2) 配置 PHP 环境
Workerman 支持 PHP 7+ 版本,建议使用 PHP 7.4 或更高版本。确保你的 PHP 环境满足以下条件:
- 安装 PHP 7.4+
如果你使用的是 Linux,可以通过以下命令安装 PHP:
sudo apt-get update
sudo apt-get install php7.4 php7.4-cli php7.4-mbstring php7.4-xml php7.4-curl php7.4-json
- 确认 PHP 版本
你可以通过以下命令检查你的 PHP 版本:
php -v
- 安装必要的 PHP 扩展
Workerman 依赖于一些常用的 PHP 扩展,如pcntl
、mbstring
等。确保你的 PHP 安装中包含以下扩展: pcntl
:用于支持多进程。mbstring
:用于多字节字符支持(如中文)。json
:用于处理 JSON 数据。curl
:用于 HTTP 请求。 在 Ubuntu 系统中,你可以通过以下命令安装:
sudo apt-get install php7.4-pcntl php7.4-mbstring php7.4-curl php7.4-json
在 Windows 环境下,pcntl
扩展默认不支持。如果是在 Windows 上开发,建议在 WSL(Windows Subsystem for Linux)环境中使用。
2. 基本配置
(1) Workerman 的配置文件结构
Workerman 的配置大多是通过 PHP 代码进行设置的,通常没有单独的配置文件。配置项在 Worker 类及其子类中进行设置。
例如,配置 WebSocket 服务可以通过以下方式进行:
use Workerman\Worker;
$worker = new Worker('websocket://0.0.0.0:8080');
// 设置进程数量
$worker->count = 4;
// 设置启动函数
$worker->onWorkerStart = function($worker) {
echo "Worker started\n";
};
Worker::runAll();
在这个例子中,websocket://0.0.0.0:8080
是服务的监听地址,count
是设置工作进程数,onWorkerStart
是工作进程启动时调用的回调函数。
常见配置项:
- count:设置进程数,决定了 Workerman 启动时创建的子进程数。通常,进程数应根据服务器的 CPU 核心数进行设置。
- onWorkerStart:工作进程启动时执行的回调函数。
- onMessage:设置接收到客户端消息时的回调函数。
(2) 配置工作目录和日志
虽然 Workerman 默认会在当前工作目录下运行,但为了更好的管理,你可以显式设置工作目录和日志文件的路径。
- 设置工作目录:
使用WORKER_RUNNING_DIR
环境变量或在代码中设置Worker::set
方法来指定工作目录。例如:
Worker::set([
'worker_name' => 'MyWorker',
'log_file' => '/path/to/log/file.log',
'pid_file' => '/path/to/pid/file.pid',
]);
- 设置日志文件:
Workerman 支持日志输出,你可以指定日志文件的位置。默认情况下,Workerman 会将日志输出到标准输出。如果你希望将日志写入文件,可以通过log_file
配置项进行设置:
Worker::set([
'log_file' => '/path/to/workerman.log',
]);
此外,你还可以通过设置 log_level
来设置日志级别,例如:
Worker::set([
'log_level' => 3, // 输出所有日志
]);
- 设置 PID 文件:
设置进程的 PID 文件,便于管理进程。
Worker::set([
'pid_file' => '/path/to/worker.pid',
]);
(3) 启动和停止 Workerman 服务
Workerman 提供了简单的启动和停止方式:
- 启动服务:通过命令行启动服务,进入项目根目录,运行以下命令:
php start.php start
这里的 start.php
是你创建的启动文件(通常为 start.php
或其他自定义名称)。在文件中,通过 Worker::runAll()
启动所有工作进程。
require_once './vendor/autoload.php'; // 引入 Composer 自动加载文件
use Workerman\Worker;
// 创建一个 WebSocket 服务
$worker = new Worker("websocket://0.0.0.0:8080");
$worker->count = 4;
// 启动服务
Worker::runAll();
- 停止服务:停止 Workerman 服务可以通过以下命令:
php start.php stop
Workerman 会自动根据 start.php
文件中的 PID 文件来停止相关进程。
- 查看状态:你可以使用以下命令来查看 Workerman 的状态:
php start.php status