https://github.com/basic-hub/es-core
新版核心业务逻辑实现,EasySwoole项目公共组件
https://github.com/basic-hub/es-core
aes cloud-lib easyswoole geo jwt notify php rsa swoole websocket
Last synced: 26 days ago
JSON representation
新版核心业务逻辑实现,EasySwoole项目公共组件
- Host: GitHub
- URL: https://github.com/basic-hub/es-core
- Owner: basic-hub
- License: apache-2.0
- Created: 2025-11-04T09:09:50.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2026-04-10T02:32:05.000Z (2 months ago)
- Last Synced: 2026-04-10T04:24:49.807Z (2 months ago)
- Topics: aes, cloud-lib, easyswoole, geo, jwt, notify, php, rsa, swoole, websocket
- Language: PHP
- Homepage:
- Size: 1.39 MB
- Stars: 4
- Watchers: 0
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## 简介
基于Easyswoole封装的一些Trait和Class,放到Composer仓库以实现多项目共用一套代码
## 开始
> composer require basic-hub/es-core
## 需要掌握的基础知识:
- [EasySwoole](http://www.easyswoole.com)
- [Swoole](https://wiki.swoole.com)
- [Composer](https://getcomposer.org)
## 目录结构及常用介绍
src 理解为EasySwoole的App目录
├── Common 主要放一些非EasySwoole的东西
| ├── Classes 自定义类
│ │ ├── CtxManager 二次封装的EasySwoole\Component\Context\ContextManager类,增加一些快捷方法
│ │ ├── DateUtils 时间日期时区等处理
│ │ ├── ExceptionTrigger 自定义异常处理器,将异常上报至redis或http
│ │ ├── FdManager WebSocket连接符管理,共享内存(Swoole\Table)实现
│ │ ├── Jwt
│ │ ├── Mysqli 对MysqlClient的二次封装
│ │ ├── TablePart 定时建分区、续分区
│ │ ├── Tree 数行结构处理
│ │ └── XlsWriter 数据导入和导出
│ ├── CloudLib 云商各产品相关实现类,目前均已支持腾讯云、阿里云,可扩展
│ ├── Exception 各种自定义异常
│ ├── Http Http相关的配置
│ │ └── Code Http响应状态码,项目的Code请`继承`它
│ ├── Language I18N国际化目录
│ │ ├── Dictionary 国际化字典,项目请`继承`它
│ │ └── Languages I18n助手类,主要用来注册、设置
│ │
│ ├── Logs 自定义日志处理器
│ ├── Geo IP解析相关
│ ├── Openssl 加密解密处理,支持RSA、AES,可扩展
│ └── OrmCache 模型缓存组件,已实现 String、Hash、Set、SplArray
├── Consumer 一些自定义进程实现,Base抽象类实现了基本Redis队列监听数据消费,但自定义进程能做的事情远不止如此,可自行发挥
├── Crontab 内置定时任务实现,可后台控制开关、运行环境、传递参数 等
│
├── HttpController
│ ├── Admin
│ │ ├── BaseTrait 继承BaseController
│ │ ├── AuthTrait 继承BaseTrait引用类,是其他控制器的父类,主要实现一些CURD等基础操作,子类可写最少代码实现相关功能
│ │ └── ... 其他业务控制器
│ ├── Api
│ └── BaseController 所有控制器的基类
├── HttpTracker 链路追踪
│ ├── Index 继承自PointContext,目的是为了默认开启autoSave及设置saveHandler,实例化时用它替代PointContext
│ └── SaveHandler 实现SaveHandlerInterface接口
├── Model
│ ├── BaseModelTrait 所有Model的基类
│ └── ... 其他业务模型
├── Notify 通知类实现,内置飞书、钉钉、微信通知
│
├── Task 异步任务
│ ├── Crontab 通用的异步任务模板
│ └── ... 异步任务类
├── Template 简单的模板引擎实现,可选
├── WebSocket 同 HttpController
├── ... 其他业务
├── EventInitialize 对EasySwooleEvent::initialize事件的一些封装
├── EventMainServerCreate 对EasySwooleEvent::mainServerCreate事件的一些封装
└── function.php 常用函数,项目可预定义对应函数以实现不同逻辑
Controller
```php
重要更新:可选依赖现改为在业务项目内引入,不再在此组件内统一引入,大幅减小构建vendor体积。
影响以下目录:
1. Common/CloudLib
例如:项目A是用的腾讯云相关接口,那么阿里云、火山云等依赖是不需要引入的,因为真的有些依赖库是压缩后都有大几十MB的,而vendor与node_modules区别在于没有编译,5个G的node_modules编译后产物实际只有几MB,而vendor目录是会直接发布到生产环境服务器,这意味着每次CI/CD都带着一大堆用不上的代码,无法接受。
请主动到各个类声明中复制 composer require xxxx 来安装引入需要使用的依赖。
- 重构自定义消费进程,支持同进程处理多个任务,避免开太多闲置进程
- 支持子链路和异步task里的链路追踪,通过协程上下文传递 `parent_id` 即可
## TODO
- [x] 创建定时任务Crontab和消费任务Consumer,src/Common/Classes/Crontab移动至src/Crontab目录
- [x] 重写ShardTable类,已重写为TablePart类
- [x] WebSocket相关类,事件、解析、Caller、连接符管理等
- [x] Crontab支持database、file、http等方式获取
- [x] es-orm-cache 组件封装,替换原有的cacheinfo系列方法
- [x] 重写verify_token为面向对象风格,验证与生成token解耦
- [x] CloudLib相关Composer依赖由业务层项目安装,移除本仓库所有相关依赖
## 常用命令
查看进程信息
>php easyswoole process show -d
杀死指定进程
>php easyswoole process kill --pid=PID
杀死指定进程组
>php easyswoole process kill --group=GROUP_NAME
杀死所有进程
>php easyswoole process killAll
强制杀死进程:带上 -f 参数
查看Task进程状态
>php easyswoole task status
## 其他
- [trait冲突解决](https://www.php.net/manual/zh/language.oop5.traits.php)
- [XlsWriter](https://xlswriter-docs.viest.me/zh-cn)
## 感谢
[
](https://www.jetbrains.com/)
## 贡献
## Star History
[](https://star-history.com/#basic-hub/es-core&Date)