Releases: imiphp/imi
日常迭代+放出 2 集视频教程
日常水一下
本周主要针对底层做了一些优化,并且修复了一些大家反馈的 bug,具体可以看下面的更新日志。
本周放出了 2 集视频教程(2.Http 请求和响应、3.Http 中间件),欢迎大家观看学习:https://www.bilibili.com/video/av78158909?p=3
另外 imi 正在进军物联网行业,阶段性放出的成果是时序数据库 InfluxDB 的 ORM:https://github.com/Yurunsoft/influxdb-orm
一个用于 InfluxDB 时序数据库的 ORM,终结没有 InfluxDB ORM 的时代。
常用操作一把梭,支持 php-fpm、Swoole 环境,一键轻松切换。
可以用于所有传统框架、所有 Swoole 框架中!
欢迎大家尝试!
更新日志
增强
-
server/reload
命令增加-runtime
参数,可以更新运行时缓存后,再重新加载服务 (文档) -
Text::startwith()
、Text::endwith()
增加是否区分大小写的参数:$caseSensitive = true
(文档) -
定时任务捕获到异常会抛出异常
-
异常日志支持无限级
Previous
-
新增支持忽略扫描指定类或命名空间 (ignoreNamespace)
-
新增
MediaType::IMAGE_ICON
-
Redis
快捷操作类支持evalEx()
方法 (文档)
修复
-
连接池心跳调整只针对空闲资源进行操作,防止多个协程执行出现错误
-
修复
CronProcess
报Warning
问题 -
修正几处代码语义化问题
优化
-
优化
Statement
,只有当执行insert、replace
语句时,才获取lastInsertId
-
注解处理类不再对非 imi 注解做处理,与其它类库兼容性更好
-
更新注解依赖包命名空间
双重惊喜:gRPC 服务开发支持&入门视频课程
上周做了 Http2 的支持,从服务端开发到客户端调用,imi、YurunHttp 都已实现支持 Http2 协议。
本周正式发布 gRPC 协议的服务开发、gRPC 客户端、gRPC 连接池。
为了让大家更好上手 imi 框架,今天正式推出《imi 框架新手入门视频课程》👍,每周至少更新一集。
课程地址:https://space.bilibili.com/768718/channel/detail?cid=94514
入门课程完全免费!完全免费!完全免费!
更新日志
新增
- 新增支持 gRPC 服务开发
- 新增支持 gRPC 客户端服务调用
- 新增 gRPC 连接池
- 新增单例 Http 控制器基类,支持使用 $this->request、$this->response,对象内部协程上下文自动切换
- 新增完全免费的《imi 框架新手入门视频课程》
优化
- 优化 Http 动作中间件
- 优化测试代码
修复
- 修复若干小问题
新增强大的定时任务功能
新增
-
新增强大的定时任务功能 (文档传送门)
-
新增支持 Http2 服务开发
-
新增 Http2、gRPC 相关常量到 MediaType、RequestHeader
-
支持应用上下文读写,支持只读写入
-
新增支持获取当前代码运行在何种进程中(master、manager、worker、task_worker、process)
-
新增支持正则路由(#31)
-
支持自定义错误级别,将错误转为异常捕获
优化
-
HttpErrorHandler 中使用服务器上文容器获取执行器实例
-
支持注入修改默认的 ActionMiddleware
-
支持给容器对象类手动绑定
-
进程退出自动释放资源
-
事件监听、取消监听支持传入数组指定多个事件
-
新增支持在注解设定进程是否默认启用协程
-
优化 parseDotRule 性能 (#32)
修复
-
修复会获取到不应该存在的请求头问题
-
修复锁不在同一个协程无法解锁的问题
新增连接池心跳机制
2019年度最受欢迎中国开源软件评选,投一票 imi 吧,谢谢!
https://www.oschina.net/project/top_cn_2019#imi
新增
-
新增支持通过beans注入配置,随服务启动进程
-
新增 @PoolClean 注解,可以在 Tool、Process 的入口方法上使用,用于剔除或保留指定连接池
-
新增支持连接池心跳机制,支持设置当获取资源时是否检测连接状态
优化
-
优化 Statement 的写入和清理机制
-
优化视图处理性能
-
优化动作执行参数处理效率
-
热更新不占用连接池
-
优化模型转数组性能
-
process/start 工具,现在的返回码是进程返回的
-
优化:关闭连接池时停止心跳,并且清空资源池
-
连接池的自动GC和心跳,在非 worker 进程中,只要有协程运行就能启用
v1.0.18
优化及修复问题
紧急修复单例控制器问题
紧急修复单例控制器问题
支持接管 $_GET、$_POST等超全局变量
新增
-
新增支持查询器别名,减少查询器连贯操作重复构建步骤
-
新增超全局变量 Hook,将
@app.beans.SuperGlobals.enable
配置为true
,即可在代码中直接使用:$_GET、$_POST、$_COOKIE、$_REQUEST、$_SESSION、$_SERVER、$_FILES
-
新增模型
Meta
类,用于在模型类中方便获取模型相关信息 -
Http/TCP/UDP/WS 控制器支持设定是否为单例模式
-
新增
Model::dbQuery()
方法,查询结果为数组而不是当前类实例对象 -
新增
@ServerInject
注解
优化
-
优化模型代码
-
去除无用代码
-
废除旧的 gzip 响应方法,优化代码
-
移除 Log traceMinimum
修复
-
修复分页查询,页码不为 1 时,总记录数和总页数显示为 0 的问题
-
修复模型
parseSaveData
事件中,修改 data 值会改变模型属性值问题
日常迭代版本
又周五了,最近学习 imi 的用户越来越多,imi 也在变得越来越好。预祝大家周末快乐~
以下是此次更新日志:
新增
-
新增模型性能测试
-
新增 Redis 模型测试用例
-
模型生成工具新增
-entity
参数,是否开启使用驼峰命名,默认开启 (#27)
优化
-
完善 Redis 模型方法返回值
-
当连接池不使用负载均衡(只有1个连接配置)时,直接返回资源
-
优化模型
-
优化测试用例
-
将树形模型的 getAssocList() 封装为 ArrayUtil::toTreeAssoc() 通用方法
修复
-
修复 Session Cookie lifetime 设为 0 无效问题
-
修复使用 Redis 模型时,调用 ModelManager::getFields() 的问题
-
修复 ArrayUtil::recursiveMerge(),合并以数字为键的数组时,丢失键的问题
新增支持 Swoole 高性能协程服务器
本周主要推出了一个进程池和高性能协程服务器,相比传统模式,即便是跟 BASE 模式相比,也有非常大的性能提升。
新增
-
新增支持高性能 Swoole 协程服务器,性能更加强悍,需要 Swoole 4.4+
-
新增一个可以替代 Swoole\Process\Pool 的更强大的进程池。支持信号监听、重启进程(可指定)、Pool Master 与 Worker 消息通讯等。
-
支持在项目中配置 imi 启用哪些功能模块
优化
- 优化 http 路由性能,当路由数量多时效果明显
修复
- 修复部分情况下的热更新进程残留问题