xin / workman-server
There is no license information available for the latest version (v1.0.0) of this package.
基于 Workman 实现的服务器是一种高性能的 PHP 服务器解决方案,能够无缝接入 ThinkPHP、Laravel 等主流框架。
This package's canonical repository appears to be gone and the package has been frozen as a result. Email us for help if needed.
v1.0.0
2025-03-29 11:29 UTC
Requires
- php: >=7.1.9
- workerman/gateway-worker: ^3.1
- workerman/gatewayclient: ^3.0
- xin/capsule: ^1.0
- xin/support: ^1.0
This package is not auto-updated.
Last update: 2025-09-02 10:42:18 UTC
README
介绍
基于 Workman 实现的服务器是一种高性能的 PHP 服务器解决方案,能够无缝接入 ThinkPHP、Laravel 等主流框架。以下是关于如何使用 Workman 构建服务器并与主流框架集成的说明:
Workman 简介
Workman 是一个轻量级的 PHP 服务器框架,专注于高性能和低资源消耗。它支持多进程、异步处理和热部署,非常适合构建高并发的应用程序。通过简单的配置,Workman 可以轻松与 ThinkPHP、Laravel 等主流框架集成,提供高效的开发和运行环境。
特点
高性能:支持多进程和异步处理,能够处理大量并发请求。 热部署:无需重启服务器即可更新代码。 易于集成:与主流框架无缝对接,无需修改框架核心代码。 灵活配置:支持多种协议(HTTP、WebSocket、TCP 等)。
安装教程
composer require xin/workerman-server
使用说明
配置文件 config.php
<?php
<?php
use App\Listeners\Websocket\WebsocketListener;
global $argv;
return [
// Http 服务
'http' => [
'enable' => true,
// 设置协议
'name' => 'HttpServer',
// 设置监听的地址和端口
'bind_address' => '0.0.0.0:9501',
// 设置进程数
'count' => 1,// cpu_count(),
// 传输协议
'transport' => 'tcp',
// 设置用户权限
'user' => '',
// 设置用户组权限
'group' => '',
// 服用端口
'reuse_port' => false,
// 在向子进程发送停止命令stopTimeout秒后,如果进程仍在运行,则强制终止。
':stop_timeout' => 2,
// PID 文件
':pid_file' => storage_path() . '/workerman.pid',
// 状态文件
':status_file' => storage_path() . '/workerman.status',
// 进程输出文件
':stdout_file' => storage_path('logs') . '/workerman_stdout.log',
// 日志文件
':log_file' => storage_path('logs') . '/workerman.log',
// 事件循环
':event_loop_class' => '',
// 最大数据包大小
'max_package_size' => 10 * 1024 * 1024,
],
// Websocket 服务
'websocket' => [
'enable' => false,
// 网关配置
'gateway' => [
// 设置Gateway进程的名称,方便status命令中查看统计
'name' => 'WebsocketGateway',
// 设置监听的端口
'bind_address' => '0.0.0.0:9502',
// 进程的数量
'count' => intval(cpu_count() / 2),
// 内网ip,多服务器分布式部署的时候需要填写真实的内网ip
'lan_ip' => '127.0.0.1',
// 监听本机端口的起始端口
'start_port' => 2300,
// 心跳间隔
'ping_interval' => 10,
// 服务端主动发送心跳
'ping_not_response_limit' => 0,
// 心跳数据
'ping_data' => '{"type":"ping"}',
// 服务注册地址
'register_address' => '127.0.0.1:1236',
// 处理器
'handler' => [
// 'use' => 'App\WebSocket\Gateway',
// 'constructor' => [],
],
],
// 业务进程配置
'business_worker' => [
// 设置BusinessWorker进程的名称
'name' => 'WebsocketBusinessWorker',
// 设置BusinessWorker进程的数量
'count' => cpu_count(),
// 注册服务地址
'register_address' => '127.0.0.1:1236',
// 设置使用哪个类来处理业务,业务类至少要实现onMessage静态方法,onConnect和onClose静态方法可以不用实现
'event_handler' => WebsocketListener::class,
],
// 服务注册配置
'register' => [
// 设置Gateway进程的名称,方便status命令中查看统计
'name' => 'WebsocketRegister',
// 设置监听的端口
'bind_address' => '0.0.0.0:1236',
],
],
// 其他进程
'process' => [
[
'handler' => [
'use' => Xin\WorkmanServer\Handlers\HotWatcherHandler::class,
'constructor' => [
// Monitor these directories
'monitorDir' => array_merge(
[
base_path('app'),
base_path('config'),
base_path('routes'),
base_path() . '/.env',
base_path('public') . '/.index.php',
],
),
// Files with these suffixes will be monitored
'monitorExtensions' => [
'php', 'html', 'htm', 'env',
],
'options' => [
'enable_file_monitor' => !in_array('-d', $argv ?? []) && DIRECTORY_SEPARATOR === '/',
'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
],
],
],
'reloadable' => false,
],
],
];