An open API service indexing awesome lists of open source software.

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项目公共组件

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)

## 感谢

[JetBrains Logo (Main) logo.](https://www.jetbrains.com/)

## 贡献


Contribution Leaderboard


Contributors

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=basic-hub/es-core&type=Date)](https://star-history.com/#basic-hub/es-core&Date)