PHPackages                             bingcool/swoolefy - 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. [Framework](/categories/framework)
4. /
5. bingcool/swoolefy

ActiveProject[Framework](/categories/framework)

bingcool/swoolefy
=================

swoolefy is a HV Framework based on swoole extension, for everyone use it easily!

v6.1.0(4mo ago)50964476[2 issues](https://github.com/bingcool/swoolefy/issues)MITPHPPHP ^8.2

Since Apr 27Pushed 2mo ago25 watchersCompare

[ Source](https://github.com/bingcool/swoolefy)[ Packagist](https://packagist.org/packages/bingcool/swoolefy)[ RSS](/packages/bingcool-swoolefy/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (11)Versions (108)Used By (0)

swoolefy
========

[](#swoolefy)

```
  ______                                _           _ _ _ _
 /  ____|                              | |         |  _ _ _|  _   _
|  (__     __      __   ___     ___    | |   ___   | |       | | | |
 \___  \   \ \ /\ / /  / _ \   / _ \   | |  / _ \  | |_ _ _  | | | |
 ____)  |   \ V  V /  | (_) | | (_) |  | | | ___/  |  _ _ _| | |_| |
|_____ /     \_/\_/    \___/   \___/   |_|  \___|  | |        \__, |
                                                   |_|           | |
                                                              __ / |
                                                             |_ _ /

```

### 一、简介

[](#一简介)

swoolefy是一个基于swoole实现的轻量级高性能的常驻内存型的协程级应用服务框架， 高度支持httpApi，websocket，udp服务器，以及基于tcp实现可扩展的rpc服务，worker多进程消费模型
同时支持composer包方式安装部署项目。基于实用主义设计出发，swoolefy抽象Event事件处理类， 实现与底层的回调的解耦，支持协程单例调度，同步|异步调用，全局事件注册，心跳检查，异步任务，多进程(池)，连接池等， 内置`log、session、mysql、pgsql、redis、mongodb、kafka、amqp、uuid、route midelware、cache、queue、rateLimit、traceId`等常用组件等.

### 二、建议版本

[](#二建议版本)

1、swoolefy-6.x.x 版本：
目前主分支，最低要求`php8.1+，swoole > 5.1.x， 推荐 swoole-6.x.x+ 以上最新版本`

2、swoolefy-4.8-lts 版本：
长期维护分支，最低要求`php7.3 ~ php7.4, swoole-4.8.x, 推荐直接swoole-v4.8.13`

选择哪个版本？
1、如果确定项目是使用php81+的，那么直接选择 `swoole > 5.1.x，推荐直接使用 swoole-6.x.x+ 以上最新版本更好` 安装，然后选择 `bingcool/swoolefy:^6.0` 作为项目分支安装最新稳定版本

2、如果确定项目是使用 `php7.3 ~ php7.4` 的，那么选择 swoole-v4.8+ 版本来进行编译安装(不能直接使用 swoole-cli-v4.8+ 了, 因为其内置的是php8.1，与你的项目的php7不符合) 所有只能通过编译swoole源码的方式来生成swoole扩展，然后选择 `bingcool/swoolefy:^4.9` 作为项目分支稳定版本

3、依赖编译： ./configure --enable-openssl --enable-sockets --enable-swoole-curl --enable-swoole-pgsql --enable-swoole-stdext --enable-iouring

4、若不希望自己编译构建，也可以直接使用本目录下的Dockerfile来构建镜像:

```
// 构建镜像
docker build --no-cache -t swoolefy-php83-swoole61:v1 -f ./php83-swoole61.Dockerfile .

// 启动容器(开发环境下 --security-opt seccomp=unconfined的作用是禁用这个默认配置，让容器内的进程可以使用所有系统调用比如io_uring)
// 生产环境下建议使用配置文件方式 --security-opt seccomp=./seccomp_profile.json
// @see https://github.com/moby/moby/blob/v28.3.3/profiles/seccomp/default.json
docker run -d -it --security-opt seccomp=unconfined --name=swoolefy-php83-v6 swoolefy-php83-swoole61:v1

```

### 三、实现的功能特性

[](#三实现的功能特性)

#### 基础特性

[](#基础特性)

- 支持架手脚一键创建项目自动生成最小项目骨架
- 支持swagger一键生成api文档
- 支持分组路由, 路由中间件middleware, 前置路由组件, 后置路由组件middleware,多模块应用
- 支持自定义注册不同根命名空间，快速多项目部署
- 支持httpServer，实用轻量Api接口开发
- 支持多协议websocketServer、udpServer、mqttServer
- 支持基于tcp实现的rpc服务，开放式的系统接口，可自定义协议数据格式，并提供rpc-client协程组件
- 支持DI容器，组件IOC、配置化，Channel公共组件池
- 支持协程单例注册,协程上下文变量寄存
- 支持mysql、postgreSql、redis协程组件
- 支持全局logger组件，包括system log, runtime log, request log, sql log
- 支持opentelemetry的trace链路追踪组件
- 支持分布式锁组件
- 支持滑动窗口的流量速率组件
- 支持mysql协程连接池
- 支持redis协程池
- 支持curl协程池
- 支持protobuf buffer的数据接口结构验证，压缩传输等
- 支持异步务管理TaskManager
- 定时器管理TickManager
- 内存表管理TableManager
- 支持自定义进程管理ProcessManager，进程池管理PoolsManger
- 支持底层异常错误的所有日志捕捉,支持全局日志,包括debug、info、notice、warning、error等级
- 支持自定义进程的redis，rabbitmq，kafka的订阅发布，消息队列等
- 支持热更新reload worker 监控以及更新
- 支持定时的系统信息采集，并以订阅发布，udp等方式收集至存贮端
- 支持命令行形式高度封装启动|停止控制的脚本，简单命令即可管理整个框架, 并对外提供控制启动|停止|重启|查看状态的api接口，可开发成可视化控制页面

##### 高级特性

[](#高级特性)

- 支持cron计划任务模式. 类似crontab，支持local|fork|remote url三种方式

    支持方式说明local自定义进程内定时执行代码fork自定义进程定时拉起一个新的进程，由新的进程去执行任务，可异步，类似laravel的schedule计划任务url自定义进程定时发起远程url请求，可设置callback回调处理结果
- 支持daemon模式.worker下后台daemon模式的多进程协程消费模型,包括进程自动拉起，进程数动态调整，进程健康状态监控
- 支持console终端脚本模式. 跑完脚本自动退出，可用于修复数据、数据迁移等临时脚本功能
- 支持分布式服务注册（zk，etcd）

### 四、适配协程环境组件

[](#四适配协程环境组件)

组件名称安装说明prediscomposer require predis/predis:~1.1.7predis组件、或者Phpredis扩展mongodbcomposer require mongodb/mongodb:~1.3mongodb组件，需要使用mongodb必须安装此组件rpc-clientcomposer require bingcool/rpc-client:dev-masterswoolefy的rpc客户端组件，当与rpc服务端通信时，需要安装此组件，支持在php-fpm中使用cron-expressioncomposer require dragonmantank/cron-expression:~3.3.0crontab计划任务组件，类似Linux的crobtabredis lockcomposer require malkusch/lockRedis锁组件amqpcomposer require php-amqplib/php-amqplib:~3.7.0amqp php原生实现amqp协议客户端ffmpegcomposer require php-ffmpeg/php-ffmpeg:~1.4.0php proc-open 调用ffmpeg处理音视频imagecomposer require intervention/image:~3.11.0php 图像处理组件validatecomposer require vlucas/valitronvalidate数据校验组件guzzlehttpcomposer require guzzlehttp/guzzle:~7.9.0guzzlehttp 组件oauth 2.0composer require league/oauth2-serveroauth 2.0 授权认证组件bingcool/librarycomposer require bingcool/librarylibrary组件库### 五、bingcool/library 是swoolefy require 内置库，专为swoole协程实现的组件库

[](#五bingcoollibrary-是swoolefy-require-内置库专为swoole协程实现的组件库)

实现了包括：

- Db ORM Model 组件(支持mysql、 postSql、 sqlite、 Oracle)
- DB Query Builder 链式操作查询组件
- Kafka Producer Consumer组件
- Rabbitmq Queue组件
- Rabbitmq Delay Queue 死信延迟队列组件
- Redis Cache组件
- Redis Queue队列组件
- Redis Delay Queue延迟队列组件
- RedisLock锁组件
- RateLimit限流组件
- Redis Public Subscribe组件
- Db、Redis、 Curl协程连接池组件
- UUid 分布式自增id组件
- OpenTelemetry 链路追踪组件
- Curl基础组件
- Jwt 组件
- Validate 组件
- Encrypt 加密解密组件
- Captcha 验证码组件
- Translation 国际化（I18N）

github:

### 六、安装

[](#六安装)

#### 1、先配置环境变量(必须设置)

[](#1先配置环境变量必须设置)

```
// 独立物理机或者云主机配置系统环境变量
vi /etc/profile

在/etc/profile末尾添加一行，标识环境变量，下面是支持的4个环境,框架将通过这个环境变量区分环境，加载不同的配置

export SWOOLEFY_CLI_ENV='dev'  // 开发环境
export SWOOLEFY_CLI_ENV='test' // 测试环境
export SWOOLEFY_CLI_ENV='gra'  // 灰度环境
export SWOOLEFY_CLI_ENV='prd'  // 生产环境

// 最后是配置生效
source /etc/profile

```

```
// 如果是通过dockerfile 创建容器的, 可以根据不同环境生成的内置环境变量不同镜像，每个不同的环境镜像可以用在不同环境，代码将通过这个环境变量区分环境，加载不同的配置
ENV SWOOLEFY_CLI_ENV=dev

```

#### 2、创建项目

[](#2创建项目)

```
// 下载代码到到你的自定义目录，这里定义为myproject
composer create-project bingcool/swoolefy:^6.0 myproject

```

### 七、添加项目入口启动文件cli.php,并定义你的项目目录，命名为App

[](#七添加项目入口启动文件cliphp并定义你的项目目录命名为app)

```
