3

imi 介绍

clipboard.png

imi 是基于 PHP 协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 应用开发。

由 Swoole 提供强力驱动,Swoole 拥有常驻内存、协程非阻塞 IO 等特性。

框架遵守 PSR 标准规范,提供 AOP、注解、连接池、请求上下文管理、ORM模型等常用组件。

imi 的模型支持关联关系的定义,增删改查一把梭!

与其他专注微服务领域的 Swoole 框架不同,imi 专注单体应用开发。原因很简单:大部分公司都不需要上微服务,单体应用足矣。

imi 框架第一个版本 v0.0.1 首发于 2018年6月21日

更新内容

新增

  • 增加单元测试(PHP7.1-7.4、nightly 全部通过),从此不再担心修复一个 bug,产生更多 bug。这是一个长期任务,不断充实测试用例,也欢迎大家来贡献测试代码!
  • 新增 ImiUtilCoroutine::create(),与 imigo() 行为一致
  • 新增 ImiUtilHttpMessageUtil 类
  • 新增框架优先级定义,常量类:ImiUtilImiPriority

修复

  • 修复热重启问题:worker exit timeout, forced to terminate
  • 修复 PDO Statement 无法命中缓存问题
  • 修复日志重复写入问题
  • 修复 MySQL->query() 方法不记录最后执行 SQL 语句问题
  • 修复当设置task_enable_coroutine但不设置enable_coroutine时,task事件监听参数错误问题
  • 修复类型声明
  • 修复 RedisManager::getNewInstance() 无法被 RedisManager::release() 释放问题
  • 修正 Redis 相关类型注释
  • 修复 withAddedHeader() 问题
  • 修复使用 TAutoInject 时,有父类导致无法正常注入的问题
  • 修复Callback、CallableValue注解无法注入属性问题
  • 修复配置值注入、常量注入注解,无法注入到属性问题

优化

  • 优化 BeanProxy::getConfigInjects()
  • 优化 ImiDbQueryResult
  • 非 worker 进程投递的 task,不再自动 finish
  • 同步池子 getResource() 不再有可能返回 null,一律抛出异常
  • ITaskHandler->handle() 支持返回值自动 finish
  • 规范内部监听 IMI.INITED 事件的优先级
  • 优化 BeanProxy,现在不用等到回收周期,立即会被释放
  • 注入属性值的注解类改为 ImiAopAnnotationBaseInjectValue
  • 进程、进程池进程,强制开启协程化

测试用例计划及进度

  • [x] Aop
  • [x] Config
  • [ ] Cache
  • [x] Db
  • [x] Enum
  • [x] Event
  • [x] Inject
  • [x] Redis
  • [x] HttpServer
  • [x] HttpValidate
  • [ ] WebSocketServer
  • [ ] TCPServer
  • [ ] UDPServer
  • [x] Task
  • [ ] Lock
  • [ ] Log
  • [ ] Model
  • [ ] Process
  • [ ] Utils

clipboard.png

联系我们

Github 反馈:https://github.com/Yurunsoft/...

码云仓库:https://gitee.com/yurunsoft/IMI

Segmentfault 提问:https://segmentfault.com/

开源中国 问答:https://www.oschina.net/question

QQ群交流:17916227 点击加群


宇润
768 声望51 粉丝

imi 框架创始人、Swoole 开发组成员、php-src 内核贡献者、TDengine 贡献者、2021 中国开源码力榜前百名。