busyphp/workerman 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

busyphp/workerman

Composer 安装命令:

composer require busyphp/workerman

包简介

支持异步数据处理,如批量发送邮件、短信等。可用于创建Http服务,Websocket服务、Tcp服务、Rpc服务以脱离Apache、Nginx等独立运行

README 文档

README

支持异步数据处理,如批量发送邮件、短信等。可用于创建Http服务,Websocket服务、Tcp服务、Rpc服务以脱离Apache、Nginx等独立运行

安装方式

composer require busyphp/workerman

服务命令

适用于 httptcpwebsocket 等服务
cd 到到项目根目录下执行

启动命令

php think workerman
php think workerman start

停止命令

php think workerman stop

重启命令

php think workerman restart
参数 默认值 说明
--host 监听IP
--port 监听端口
--daemon 是否常驻进程
--server 指定启动的服务名称,如:httpgateway.websocket, gateway.websocket.gateway

配置 config/workerman.php

return [
    // 是否进入守护模式
    'daemonize' => false,
    
    // HTTP服务器配置
    'http'      => [
        // 是否启动HTTP服务
        'enable'     => false,
        
        // 监听IP
        'host'       => '127.0.0.1',
        
        // 监听端口
        'port'       => 2346,
        
        // 是否启用HTTPS
        'ssl'        => false,
        
        // 用于传递socket的上下文选项,参见 https://www.php.net/manual/zh/context.socket.php
        'context'    => [],
        
        // 启动进程数量,参见 https://www.workerman.net/doc/gateway-worker/process-count-seting.html
        'worker_num' => 1,
        
        // 是否启用热更新
        'hot_update' => [
            'enable'   => env('APP_DEBUG', false),
            'interval' => 1,
            'include'  => [
                app()->getRootPath() . 'app',
                app()->getRootPath() . 'core',
                app()->getRootPath() . 'extend',
            ],
        ]
    ],
    
    // 长连接配置
    // 支持多种长连接服务
    // 格式:服务名称 => [服务配置]
    'gateway'   => [
        // 服务名称 => 服务配置
        
        'websocket' => [
            // Register注册中心进程配置
            'register' => [
                // 是否启用
                'enable'  => false,
                
                // 注册中心地址
                'address' => '127.0.0.1:1236'
            ],
            
            // BusinessWorker业务进程配置
            'business' => [
                // 是否启用
                'enable'     => false,
                
                // 启动进程数量,参见 https://www.workerman.net/doc/gateway-worker/process-count-seting.html
                'worker_num' => 1,
                
                // 回调事件处理类名,必须继承 \BusyPHP\workerman\GatewayEvents 类
                'handler'    => '\BusyPHP\workerman\GatewayEvents'
            ],
            
            // Gateway网关进程配置
            'gateway'  => [
                // 是否启用
                'enable'     => false,
                
                // 服务协议, 支持 tcp udp unix http websocket text
                'protocol'   => 'websocket',
                
                // 监听IP
                'host'       => '127.0.0.1',
                
                // 监听端口
                'port'       => 2348,
                
                // 直接指定协议,如:tcp://127.0.0.1:8080,指定后 host port 会失效
                'socket'     => '',
                
                // 用于传递socket的上下文选项,参见 https://www.php.net/manual/zh/context.socket.php
                'context'    => [],
                
                // 启动进程数量,参见 https://www.workerman.net/doc/gateway-worker/process-count-seting.html
                'worker_num' => 1,
                
                // Gateway所在服务器的内网IP
                // 多服务器分布式部署的时候需要填写真实的内网ip,不能填写127.0.0.1。注意:lanIp只能填写真实ip,不能填写域名或者其它字符串,无论如何都不能写0.0.0.0 .
                'lan_ip'     => '127.0.0.1',
                
                // Gateway进程启动后会监听一个本机端口,用来给BusinessWorker提供链接服务,然后Gateway与BusinessWorker之间就通过这个连接通讯。
                // 这里设置的是Gateway监听本机端口的起始端口。比如启动了4个Gateway进程,startPort为2000,则每个Gateway进程分别启动的本地端口一般为2000、2001、2002、2003。
                'start_port' => 2000,
                
                // 是否启用HTTPS,参见 https://www.workerman.net/doc/gateway-worker/secure-websocket-server.html
                'ssl'        => false,
                
                // 心跳设置
                'ping'       => [
                    // 心跳检测时间间隔 单位:秒。如果设置为0代表不做任何心跳检测。
                    'interval' => 0,
                    
                    // 客户端连续 limit 次 interval 时间内不发送任何数据(包括但不限于心跳数据)则断开链接,并触发onClose
                    // 如果设置为0代表客户端不用发送心跳数据,即通过TCP层面检测连接的连通性(极端情况至少10分钟才能检测到连接断开,甚至可能永远检测不到)
                    'limit'    => 0,
                    
                    // 指定服务端定时给客户端发送的心跳数据
                    'data'     => '',
                ]
            ]
        ],
    ],
    
    // 队列配置
    'queue'     => [
        'enable'  => false,
    
        // 进程配置
        'workers' => [
            // 队列名称 => [队列配置]
            'default' => [
                // 启动几个worker并行执行
                'number'     => 1,
            
                // 设置使用那个驱动执行,默认依据 `config/queue.php` 中的 `default` 确定
                'connection' => '',
            
                // 如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒
                'delay'      => 60,
            
                // 如果队列中无任务,则多长时间后重新检查
                'sleep'      => 3,
            
                // 如果任务已经超过尝试次数上限,0为不限,则触发当前任务类型下的failed()方法
                'tries'      => 0,
            
                // 进程的允许执行的最长时间,以秒为单位
                'timeout'    => 60,
            ],
        
            // 更多队列配置
        ],
    ],
    
    // 系统任务配置
    'task' => [
        'enable' => false
    ],
    
    // 自定义服务配置
    'server'    => [
        // '服务名称' => '服务类,必须继承 \BusyPHP\workerman\BaseServer 类'
    ]
]

busyphp/workerman 适用场景与选型建议

busyphp/workerman 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 02 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「workerman」 「队列」 「tcp服务」 「Websocket服务」 「任务处理」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 busyphp/workerman 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 busyphp/workerman 我们能提供哪些服务?
定制开发 / 二次开发

基于 busyphp/workerman 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 10
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2022-02-20