1

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 日

本周的更新,第一阶段的单元测试编写工作完成。

imi 的单侧目前有 235 个测试用例,1035 个断言(不含独立组件)。

imi 的 travis 自动化测试涵盖了 PHP 7.1-7.3、Swoole 4.3.x、4.4.x、master。宇润和 Swoole 开发组大佬们保持着密切联系,发现问题立即反馈。所以当 Swoole 发布新版时,imi 能够很轻松地以最快速度做到兼容。

目前 imi 保持着每周一个小版本的速度进行更新迭代,各种实用组件正在开发中。

imi 组件库:https://github.com/imiphp

欢迎各路新人和大佬的加入,只要有心,就可以参与进来!

本周具体更新日志如下:

增强

修复

  • 修复 Fixed ImiDbQuery::WhereEx() 问题(@loyating #25
  • 修复 ArrayUtil::remove() 方法无法移除对象问题,新增 ArrayUtil::removeKeepKey() 方法
  • 修复测试用例在低配电脑上出现的奇怪问题(Swoole v4.4.4 更新后出现)
  • 修复 File::path() 拼接 xxx:// 路径问题
  • 修复 ImiUtilImi::checkCompareValue() 判断不等于结果不正确问题
  • 修复随机生成小数是科学计数格式的问题

优化

  • 重构 Event,移除 KVStorage 依赖,使用类对象代替 kv 数组存储底层数据
  • 优化 Http Middleware 机制
  • 优化 WebSocket Middleware 机制
  • 优化 TCP Middleware 机制
  • 优化 UDP Middleware 机制
  • 优化测试用例
  • ImiUtilClassObject 类注释完善
  • 支持将 task_worker_num 设为 0
  • 优化 AppInitReceiver
  • 移除 File::readFile()、File::writeFile() 方法(Hook 协程化后用 file_get_contents()、file_put_contents() 即可)
  • 移除 KVStorage
  • 文件日志驱动写入时上锁
  • Query 动态参数编号全部从 1 开始

开始使用

创建 Http Server 项目:composer create-project imiphp/project-http

创建 WebSocket Server 项目:composer create-project imiphp/project-websocket

创建 TCP Server 项目:composer create-project imiphp/project-tcp

创建 UDP Server 项目:composer create-project imiphp/project-udp

完全开发手册

联系我们

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