### Q:swoolefy是什么?
A:swoolefy是一个基于swoole扩展实现的轻量级高性能的常驻内存型的API和Web应用服务框架。
swoolefy的设计思想汲取了Tp5,Yii2,workerman,swooole-framework,easyswoole等框架的优秀设计思想,并结合本人多年的技术积累以及实践经验,它一定不是最优秀的框架,但是这是一个适合学习swoole的框架,特别适合中小团队。
### Q:我为什么要开发swoolefy
A:开发swoolefy并不是一头热地想重复造轮子,2016年是我第一次接触swoole,当时swoole还是1.8.3版本,已经算是比较完善的异步通信网络扩展了。基于当时公司需要处理大量录播视频,实现视频剪切,合并,打点,自动抠封面,视频切片等,第一次使用swoole和ffmpeg结合,作为守护进程任务式实现了。在后来电商的独立的短信服务,邮件服务,搜索服务,推送服务,订单服务,定时任务,统计,websocket等都使用swoole来实现独立的服务。一次又一次的感受到了swoole的强大之处,很多以前php做不到的事,swoole基本都可以实现,作为phper,当感受它的强大之后,你会觉得很兴奋,后来觉得有必要将swoole整合成一个更简单的框架,毕竟swoole是一个网络底层框架,实际使用起来还是有点困难的。在2017年8月份,我个人正式利用业余时间开始swoolefy的编码工作,也算是个人的知识积累的过程。
### Q:为什么叫Swoolefy?
A:Swoolefy,这几个字母组合起来,当你把目光从远点看来,感觉就像一个飞翔的天使,展翅翱翔天空一样,当然这是个人感受,所以就有了Swoolefy这个......
### Q:swoolefy最重要特性有哪几方面
### A:只要体现在一下四个主要特性:
#### 轻量级:
swoolefy是一个完全基于php7实现的框架,大量使用了php的新特性,封装必要的管理、功能类或者组件,实现多协议下的代码高度复用。
#### 高性能:
一方面是基于swoole原生的高性能,另一方面基于框架本身设计,没有过多冗余,过度封装,在缓存,调度,ioc,单例等模式上优化,解决很多协程细节上的问题。
#### 协程级:
主要是swoole的原生支持,框架通过注册协程单例模式,本身解决了协程共享变量安全问题。
#### 开放性:
swoolefy并没有过度封装,很多都是面向对外的接口方式,提高适配性,开发者可以自由发挥创建,不限于框架本身。
### Q:如何加入swoolefy?
A:巨人swoole在4.3.0版本后,整体特性趋于稳定。swoolefy是站在巨人的肩膀的实现的,目前达到预期的稳定阶段。接下来阶段,swoolefy会邀请,或者接受一些优秀的开发者加入,对于有意愿的开发者,可以先提交PR。
### Q:swoolefy文档更新情况?
A:swoolefy的文档目前是整体文档,基本趋于最新的,但是很多细节功能还没有写,建议开发者需要结合代码可以来理解很多的使用方法,这也是了解,学习框架的一种好方法。后续会付出更多精力来完善文档
**swoolefy全面支持swoole4.x的原生协程,推荐使用swoole4.2.13+版本,推荐4.3.+**
* * * * *
#### swoolefy的核心特征
- [x] 路由与调度,MVC三层,多级配置
- [x] 支持composer的PSR-4规范
- [x] 支持自定义注册命名空间,快速部署项目,简单易用
- [x] 支持httpServer
- [x] 支持websocketServer,udpServer
- [x] 支持基于tcp实现的rpc服务,开放式的系统接口,可自定义协议数据格式,并提供rpc-client组件
- [x] 支持容器,组件IOC
- [x] 支持协程单例注册
- [x] 支持mysql协程组件,redis协程组件,mongodb组件,提供基于tp改造的swoolefy-orm协程mysql组件
- [x] 支持mysql的协程连接池,redis协程池
- [x] 异步务管理TaskManager,定时器管理TickManager,内存表管理TableManager,自定义进程管理ProcessManager,进程池管理PoolsManger
- [x] 支持底层异常错误的所有日志捕捉
- [x] 支持自定义进程的redis,rabitmq,kafka的订阅发布,消息队列等
- [x] 支持crontab
- [x] 支持定时的系统信息采集,并以订阅发布,udp等方式收集至存贮端
- [x] 命令行形式高度封装启动|停止控制的脚本,简单命令即可管理整个框架
- [ ] 分布式服务注册(zk,etcd,未来主要实现)
#### GitHub
https://github.com/bingcool/swoolefy 欢迎start以及使用
#### 技术交流
QQ群:735672669,欢迎加入!
个人博客:https://blog.csdn.net/u012979009
- 欢迎使用swoolefy
- 环境说明
- 开发部署
- 安装
- 创建应用
- 启动|停止服务
- nginx代理
- 创建Controller
- 应用结构
- App应用对象
- Event请求处理
- 超全局管理
- 热更新
- inotify实现worker进程热重启
- http服务
- 应用层配置
- 协议层配置
- 路由规则
- 控制器
- 数据模型
- websocket服务
- 应用层配置
- 协议层配置
- 数据封装格式
- 控制器
- 数据模型
- 二进制数据处理
- rpc服务
- 应用层配置
- 协议程配置
- 数据包协议格式
- 服务控制器
- 服务数据模型
- udp服务
- 应用层配置
- 协议层配置
- 数据包封装格式
- 控制器
- 存在问题
- 常用组件
- log
- view
- session
- cache(redis)
- db(mysql)
- mongodb
- 其他服务管理
- 自定义进程管理
- 异步任务管理
- 内存表管理
- 定时器管理
- 异常捕捉处理
- 进程池管理
- systerm采集进程服务