2

3fe596f01f46a20ddbb324ed62600527a4e.jpg

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

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

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

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

毫秒级的注解及代码热更新,让你在开发时只管一把梭,体验与 fpm 下开发并无二致,保存就刷新,立马看到效果。

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

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

测试用例持续完善中,目前有 122 个测试,437 个断言。

更新内容

更新日志

Lock

  • 新增 Lock 快捷类
  • 新增 Atomic 进程锁
  • 新增 Lock 测试用例
  • 新增 Lock Annotation 测试用例
  • Lock 接口强类型定义
  • 支持配置定义 Lock,根据 lockId 操作
  • 修复 tryLock() 执行回调时,不返回 boolean 问题

MemoryTable

  • MemoryTable 支持使用类来定义结构
  • 支持在配置中设定 MemoryTable
  • 新增 MemoryTable 测试用例
  • 修复 MemoryTableManager 问题

ConnectContext

  • 重构,现在ConnectContext不再本地存储数据,不再怕多个worker进程同时去读写
  • 新增 ConnectContext 锁支持,现在读写数据不会冲突,必须设置锁,升级请注意!
  • 新增内存表 ConnectContext Handler 支持

Cache

  • 新增 RedisHash Handler defaultHashKey
  • 新增缓存测试用例
  • 新增缓存注解测试用例
  • 修复 Cache Redis/RedisHash Handler 返回值问题
  • 修复 Cache File delete() 不删除 .ex 文件问题
  • 修复 Cache File clear() 无返回值问题
  • 修复 Cache File getMultiple() 方法返回键为数字问题

WebSocket

  • 新增 WebSocket open 事件
  • WebSocket 的连接上下文创建移动到中间件执行之前,在中间件中就可以操作连接上下文

其它

  • 使用 defer 实现自动释放 RequestContext
  • 新增支持 redis 的 options 配置项(支持:Redis::OPT_XXX)
  • 支持设定 ServerGroup 的 status,是否启用分组
  • 调整:当PoolResource->checkState()为false时,先close()再open()
  • initWorker() 中清除池和缓存对象
  • 让测试用例在协程下运行
  • 修复 GroupRedis、ConnectContextRedis 不等待执行完毕的就 App Inited 的问题
  • Db Statement 释放移入 Db 下
  • HttpDispatcher->dispatch() 增加返回值 Response
  • 修复 AtomicManager::wakeup() 返回值问题

联系我们

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 中国开源码力榜前百名。