Workerman 环境搭建与安装教程:从零开始配置与部署
                           
天天向上
发布: 2025-01-20 23:20:18

原创
675 人浏览过

Workerman 是一个非常高效的 PHP 网络框架,适合构建高并发的实时应用。在开始使用 Workerman 时,首先需要完成环境搭建与安装,并配置工作目录、日志等。通过 Composer 安装 Workerman,确保你的 PHP 环境与所需扩展的安装,接着你可以通过 PHP 代码来配置服务并启动。完成这些步骤后,你就可以开始构建自己的高性能网络服务了。


1. 安装 Workerman

(1) 使用 Composer 安装 Workerman

Composer 是 PHP 的依赖管理工具,可以轻松安装和管理项目的依赖包。要安装 Workerman,首先需要确保已经安装了 Composer。然后可以通过 Composer 安装 Workerman。

  1. 安装 Composer(如果尚未安装)
    如果尚未安装 Composer,可以使用以下命令来安装:
   curl -sS https://getcomposer.org/installer | php

然后将 composer.phar 文件移动到系统的环境路径中(如 /usr/local/bin)。

  1. 通过 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 扩展,如 pcntlmbstring 等。确保你的 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

发表回复 0

Your email address will not be published. Required fields are marked *