xin / workman-server
There is no license information available for the latest version (v1.0.0) of this package.
基于 Workman 实现的服务器是一种高性能的 PHP 服务器解决方案,能够无缝接入 ThinkPHP、Laravel 等主流框架。
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-04-01 08:34:29 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,
],
],
];