PHPackages                             zoujingli/think-plugs-worker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. zoujingli/think-plugs-worker

ActiveThink-admin-plugin[Queues &amp; Workers](/categories/queues)

zoujingli/think-plugs-worker
============================

Workerman HttpServer for ThinkAdmin

v1.0.29(3mo ago)21.6k1Apache-2.0PHPPHP &gt;7.1

Since Mar 20Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/zoujingli/think-plugs-worker)[ Packagist](https://packagist.org/packages/zoujingli/think-plugs-worker)[ Docs](https://thinkadmin.top)[ RSS](/packages/zoujingli-think-plugs-worker/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (8)Dependencies (6)Versions (30)Used By (1)

ThinkPlugsWorker for ThinkAdmin
===============================

[](#thinkplugsworker-for-thinkadmin)

[![Latest Stable Version](https://camo.githubusercontent.com/f1cbdeddd190ddc2c49a12a53ba1f174314bcfd1d6b300b80a455eb8807c587d/68747470733a2f2f706f7365722e707567782e6f72672f7a6f756a696e676c692f7468696e6b2d706c7567732d776f726b65722f762f737461626c65)](https://packagist.org/packages/zoujingli/think-plugs-worker)[![Total Downloads](https://camo.githubusercontent.com/60dd163e1ce647aac73abc3c58faa0be41f276fb880d7fcaa365c14356c17623/68747470733a2f2f706f7365722e707567782e6f72672f7a6f756a696e676c692f7468696e6b2d706c7567732d776f726b65722f646f776e6c6f616473)](https://packagist.org/packages/zoujingli/think-plugs-worker)[![Monthly Downloads](https://camo.githubusercontent.com/94c16ffeb2ba90a240f1b675008526bd47d941b52ebc21dd754d2aad31e64073/68747470733a2f2f706f7365722e707567782e6f72672f7a6f756a696e676c692f7468696e6b2d706c7567732d776f726b65722f642f6d6f6e74686c79)](https://packagist.org/packages/zoujingli/think-plugs-worker)[![Daily Downloads](https://camo.githubusercontent.com/2cdef7c76809514c40beaa2fa474bfdec396895eb58f74f27b61b458583e8b9e/68747470733a2f2f706f7365722e707567782e6f72672f7a6f756a696e676c692f7468696e6b2d706c7567732d776f726b65722f642f6461696c79)](https://packagist.org/packages/zoujingli/think-plugs-worker)[![PHP Version](https://camo.githubusercontent.com/6edd55d00ff169d80f252ddfcd8137da3213250a8ebd4626e06ca0f80efb0657/68747470733a2f2f7468696e6b61646d696e2e746f702f7374617469632f69636f6e2f7068702d372e312e737667)](https://thinkadmin.top)[![License](https://camo.githubusercontent.com/df839ea26769346903b7b24d3fd1357f81ce3456d2fb2651418d542288c4cb37/68747470733a2f2f706f7365722e707567782e6f72672f7a6f756a696e676c692f7468696e6b2d706c7567732d776f726b65722f6c6963656e7365)](https://gitee.com/zoujingli/think-plugs-worker/blob/master/license)

### 业务功能特性

[](#业务功能特性)

**核心异步任务处理：**

- **HTTP 服务支持**: 基于 Workerman 4.x 提供高性能 HTTP 服务，无需 Nginx/Apache 配置，访问速度显著提升
- **多协议支持**: 支持 WebSocket、TCP、UDP 等多种通信协议，满足不同应用场景需求
- **Gateway 模式**: 支持 Gateway 分布式架构，适用于高并发实时通信场景
- **自定义服务**: 提供灵活的自定义服务配置，支持 Text、WebSocket、Gateway、Register、Business 等多种服务类型
- **异步任务队列**: 内置高效的异步任务处理机制，响应延时低于 0.5 秒
- **进程管理**: 完善的进程启动、停止、重载、状态监控等管理功能
- **跨平台支持**: 同时支持 Windows 和 Linux 平台，提供统一的操作接口

**技术特性：**

- **Apache2 开源协议**: 遵循 Apache2 开源协议，免费提供使用
- **高性能架构**: 基于 Workerman 事件驱动架构，单机可支撑数万并发连接
- **模块化设计**: 各服务类型独立配置，便于扩展和维护
- **向后兼容**: 保持与现有 ThinkAdmin 版本的兼容性，确保平滑升级
- **文档完善**: 提供完整的配置示例和使用文档，快速上手

基于 **Workerman 4.x** 且支持多种通信协议的基础插件。

**提示：** 默认支持以 HTTP 方式直接启动 ThinkAdmin 项目，无需配置 Nginx 或 Apache 环境，访问速度提升 N 倍。

**注意：** 该插件支持 `Workerman` 或 `Gateway` 两种运行方式，默认只安装了 `Workerman` 组件，如果需要使用 `Gateway` 组件，请另行安装。 配置文件的根配置参数是启动 **http** 服务进程，用来运行 **ThinkAdmin v6** 程序。 如果需要使用其他协议，请使用并修改 `customs` 配置或追加配置，并通过指定 `--custom name` 配置名来启动对应服务进程。

### 加入我们

[](#加入我们)

我们的代码仓库已移至 **Github**，而 **Gitee** 则仅作为国内镜像仓库，方便广大开发者获取和使用。若想提交 **PR** 或 **ISSUE** 请在 [ThinkAdminDeveloper](https://github.com/zoujingli/ThinkAdminDeveloper) 仓库进行操作，如果在其他仓库操作或提交问题将无法处理！.

### 安装插件

[](#安装插件)

```
### 安装前建议尝试更新所有组件
composer update --optimize-autoloader

### 注意，插件仅支持在 ThinkAdmin v6.1 中使用
composer require zoujingli/think-plugs-worker --optimize-autoloader
```

### 卸载插件

[](#卸载插件)

```
composer remove zoujingli/think-plugs-worker
```

### 配置参数

[](#配置参数)

配置文件 `config/worker.php`

```
return [
    // 服务监听地址
    'host' => '127.0.0.1',
    // 服务监听端口
    'port' => 2346,
    // 套接字上下文选项
    'context' => [],
    // 高级自定义服务类
    'classes' => '',
    // 消息请求回调处理
    'callable' => null,
    // 服务进程参数配置
    'worker' => [
        // 进程名称
        "name" => 'ThinkAdmin',
        // 进程数量
        'count' => 4,
    ],
    // 自定义服务配置（可选）
    'customs' => [
        // 自定义 text 服务
        'text' => [
            // 进程类型(Workerman|Gateway|Register|Business)
            'type' => 'Workerman',
            // 监听地址(://:)
            'listen' => 'text://0.0.0.0:8685',
            // 高级自定义服务类
            'classes' => '',
            // 套接字上下文选项
            'context' => [],
            // 服务进程参数配置
            'worker' => [
                //'name' => 'TextTest',
                // onWorkerStart => [class,method]
                // onWorkerReload => [class,method]
                // onConnect => [class,method]
                // onBufferFull => [class,method]
                // onBufferDrain => [class,method]
                // onError => [class,method]
                // 设置连接的 onMessage 回调
                'onMessage' => function ($connection, $data) {
                    $connection->send("hello world");
                }
            ]
        ],
        // 自定义 websocket 服务
        'websocket' => [
            // 进程类型(Workerman|Gateway|Register|Business)
            'type' => 'Workerman',
            // 监听地址(://:)
            'listen' => 'websocket://0.0.0.0:8686',
            // 高级自定义服务类
            'classes' => '',
            // 套接字上下文选项
            'context' => [],
            // 服务进程参数配置
            'worker' => [
                //'name' => 'TextTest',
                // onWorkerStart => [class,method]
                // onWorkerReload => [class,method]
                // onConnect => [class,method]
                // onBufferFull => [class,method]
                // onBufferDrain => [class,method]
                // onError => [class,method]
                // 设置连接的 onMessage 回调
                'onMessage' => function ($connection, $data) {
                    $connection->send("hello world");
                }
            ]
        ],
        // 自定义 Gateway 服务
        'gateway' => [
            // 进程类型(Workerman|Gateway|Register|Business)
            'type' => 'Gateway',
            // 监听地址(://:)
            'listen' => 'websocket://127.0.0.1:8689',
            // 高级自定义服务类
            'classes' => '',
            // 套接字上下文选项
            'context' => [],
            // 服务进程参数配置
            'worker' => [
                // 进程名称
                "name" => 'Gateway',
                // 进程数量
                 "count" => 4,
                // 心跳发送时间，针对客户端
                'pingInterval' => 10,
                // 心跳容错次数，针对客户端
                'pingNotResponseLimit' => 0,
                // 心跳包内容，针对客户端
                'pingData' => '{"type":"ping"}',
                 // 服务器内网IP
                "lanIp" => '127.0.0.1',
                // Business 回复 Gateway 端口
                "startPort" => 2000,
               // 注册服务地址，与 Register 进程对应
                "registerAddress" => '127.0.0.1:1236',
                // 进程启动回调
                "onWorkerStart" => function () {
                    echo "Gateway onWorkerStart" . PHP_EOL;
                },
                 // 进程停止回调
                "onWorkerStop" => function () {
                    echo "Gateway onWorkerStop" . PHP_EOL;
                }
            ]
        ],
        // 自定义 Register 服务
        'register' => [
            // 进程类型(Workerman|Gateway|Register|Business)
            'type' => 'Register',
            // 监听地址(://:)
            // 注意：别改这里的协议，只支持 text 协议
            'listen' => 'text://127.0.0.1:1236'
        ],
        // 自定义 Business 服务
        'business' => [
            // 进程类型(Workerman|Gateway|Register|Business)
            'type' => 'Business',
            // 高级自定义服务类
            'classes' => '',
            // 服务进程参数配置
            'worker' => [
                // 进程名称
                "name" => 'Business',
                // 进程数量
                "count" => 4,
                // 注册服务地址，与 Register 进程对应
                "registerAddress" => '127.0.0.1:1236',
                // 业务处理类
                "eventHandler" => Events::class,
                // 进程启动回调
                "onWorkerStart" => function () {
                    echo "Business onWorkerStart" . PHP_EOL;
                },
                // 进程停止回调
                "onWorkerStop" => function () {
                    echo "Business onWorkerStart" . PHP_EOL;
                }
            ]
        ],
    ],
];

/**
 * 业务处理类
 * @class Events
 */
class Events
{

    /**
     * 业务进程启动
     * @param $businessWorker
     * @return void
     */
    public static function onWorkerStart($businessWorker)
    {
        echo "Events WorkerStart\n";
    }

    /**
     * 有消息时触发该方法
     * @param int $clientid 发消息的client_id
     * @param mixed $message 消息
     * @throws \Exception
     */
    public static function onMessage($clientid, $message)
    {
        // 群聊，转发请求给其它所有的客户端
        \GatewayWorker\Lib\Gateway::sendToAll("Message By Events : {$message}");
    }
}
```

### 使用方法

[](#使用方法)

在命令行启动服务端

```
#========= 启动参数配置 =========
### 守护方式运行  -d
### 指定监听域名  --host 127.0.0.1
### 指定监听端口  --port 2346
### 启动指定服务  --custom websocket

# 通过 Workerman 方式，启动默认 Http 服务
php think xadmin:worker

# 通过 Workerman 方式，启动自定义 text 服务，注意 text 为 customs 配置项
php think xadmin:worker --custom text

# 通过 Workerman 方式，启动自定义 WebSocket 服务，注意 websocket 为 customs 配置项
php think xadmin:worker --custom websocket

# 通过 Gateway 方式，需要同时启动三个进程，另外还需要安装 workerman/gateway-worker 依赖包。
# 具体业务处理逻辑写在 business 绑定的 Events 中，了解更新多配置请阅读 Workerman 官方文档。
php think xadmin:worker --custom register
php think xadmin:worker --custom gateway
php think xadmin:worker --custom business
```

然后就可以通过浏览器直接访问当前应用

```
http://localhost:2346

```

默认使用 `Workerman` 工作方式，如果需要使用 `Gateway` 方式，需要安装 `GatewayWorker` 组件。

安装 `GatewayWorker` 的指令如下：

```
# 安装 GatewayWorker 组件
composer require workerman/gateway-worker
```

**注意：** 启用 `Gateway` 时需要单独启动三个进程，分别是 `Gateway`、`Register`、`Business`，中间需要 `Register` 进程连接。

**数据通信模型：**

`Client` `` `Gateway` `` `Register` `` `Business` `` `Events`

**Linux** 支持操作指令如下：

```
php think xadmin:worker [start|stop|reload|restart|status|-d]

# 以上所有操作效果与 Workerman 官方操作一致，详情请阅读对应文档。
```

**Windows** 支持操作指令如下：

```
php think xadmin:worker [start|stop|status|-d]

# 以上 stop|status|-d 操作是基于 wimc 实现，Workerman 官方不支持此种方式操作。
```

其他 **workerman** 的参数可以在应用配置目录下的 **worker.php** 里面 **worker** 项配置。

更多其他特性请阅读 **workerman** 文档

### 代理配置

[](#代理配置)

Nginx 代理代理配置参考如下：

```
location ^~ / {

    # 执行代理访问真实服务器
    proxy_pass http://127.0.0.1:2346/;

    # 将客户端的 Host 和 IP 信息一并转发到对应节点
    proxy_set_header Host $http_host;
    proxy_set_header X-Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # 将协议转发到对应节点，如果使用非 https 请改为 http
    proxy_set_header X-scheme https;

    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;

    # proxy_hide_header Upgrade;
    add_header X-Cache $upstream_cache_status;
}

```

### 版权说明

[](#版权说明)

**ThinkPlugsWorker** 遵循 **Apache2** 开源协议发布，并提供免费使用。

本项目包含的第三方源码和二进制文件之版权信息另行标注。

版权所有 Copyright © 2014-2025 by ThinkAdmin () All rights reserved。

更多细节参阅 [LICENSE.txt](license)

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance84

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~37 days

Recently: every ~102 days

Total

29

Last Release

99d ago

PHP version history (2 changes)v1.0.1PHP &gt;=7.1

v1.0.16PHP &gt;7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/c806d477ba01d9441023f3cc9a7c70e6491a189d0aae80bca2cc444691e31723?d=identicon)[zoujingli](/maintainers/zoujingli)

---

Top Contributors

[![zoujingli](https://avatars.githubusercontent.com/u/4349951?v=4)](https://github.com/zoujingli "zoujingli (23 commits)")

### Embed Badge

![Health badge](/badges/zoujingli-think-plugs-worker/health.svg)

```
[![Health](https://phpackages.com/badges/zoujingli-think-plugs-worker/health.svg)](https://phpackages.com/packages/zoujingli-think-plugs-worker)
```

###  Alternatives

[workerman/phpsocket.io

A server side alternative implementation of socket.io in PHP based on Workerman

2.3k578.6k16](/packages/workerman-phpsocketio)[workerman/rabbitmq

Asynchronous rabbitmq client for PHP based on workerman.

4313.4k6](/packages/workerman-rabbitmq)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
