内容简介:距离上次发布差不多一个月了,这期间 imi 稳步推进,修复各项问题的同时,增加了不少实用组件和注解。 此次更新,在开发项目的体验也有巨大的提升。imi 的热更新采用了最新的增量更新技术,原本我们的实际项目在 ...
距离上次发布差不多一个月了,这期间 imi 稳步推进,修复各项问题的同时,增加了不少实用组件和注解。
此次更新,在开发项目的体验也有巨大的提升。imi 的热更新采用了最新的增量更新技术,原本我们的实际项目在 WSL 下热重启需要 6 秒(根据文件增多,逐渐变慢),现在使用框架核心运行时缓存
+热更新重启采用增量方式
,不管文件增加多少只需 1 秒左右,即可完成热重新重启,极速的体验~
另外我们的框架核心运行时缓存、项目运行时缓存、数据库 Statement
复用等优化,也为开发、生产时的性能及体验打下了坚实的基础。
我们将持续为性能优化,为可靠性优化。
在此要特别感谢 @wi1dcard 一直以来的讨论交流,感谢群里每一位同学。
当前 imi 还不是正式版,就快了,请耐心等待哦!
更新日志:
新增
Redis
新增RedisManager类(getNewInstance/getInstance/release/getDefaultPoolName)
新增 Redis 类,用于快捷操作,如:Imi\Redis\Redis::set($key, $value)
新增 redis.quickFromRequestContext 配置项,支持配置Redis快捷操作类,使用RequestContext独享连接还是连接池实时争抢
Redis连接池配置新增支持uri格式
缓存
新增RedisHash缓存驱动
新增 Cacheable、CacheEvict、CachePut 注解
实现 Cacheable 注解中的 Lockable 嵌套使用
锁
新增 Lock,支持注解锁 Lockable,默认带有 RedisLock 支持
配置
新增支持 Config::get('@currentServer.xxx') 用法,当前服务器配置中不存在则取 @app 中的配置
增加注入值注解的概念,支持 ConfigValue 等注解,可用于注解参数使用配置值
注解
新增 Callback 注解,其 class 可配合 Inject 注解,实现表示bean类方法回调
Condition注解的args属性,增加默认值
新增 Compare、ValidateValue 用于验证的注解
新增 ConstValue 注解,从从常量中读取值注入注解属性
验证器
Http 验证器新增支持验证 $headers、$cookie、$session
为验证器增加$this支持
其它
新增支持忽略路由URL大小写
实现进程名称统一管理
新增支持方法参数注入
为Bean类统一增加__clone支持
实现了unset()模型类属性的处理
新增用于过滤字段的列表 Imi\Util\FilterableList
MySQL、Redis连接池配置新增支持uri格式
新增支持.env环境变量
数据库查询器支持 replace into 用法
Model->save()实现方式改为replace
@ExtractData 现在可以导出单独的$get/$post/$body等数据了
新增jsonBodyIsObject配置项,设置post body为json时,转为对象还是数组,默认为false数组。可以和@app.jsonBodyIsObject或@currentServer.jsonBodyIsObject配合使用
新增 Pagination 分页计算类
新增 Imi\Util\ObjectArrayHelper::filter() 过滤对象或数组属性的方法
新增热重启耗时输出
优化
完善CoroutineRedisHandler类魔术方法注释
因PHP BUG,放弃使用匿名类,Bean类采用eval()+动态类名,不再使用include Bean缓存文件,Bean缓存相关配置及方法移除。因此,性能有所提升。
Worker 进程启动时,重新加载项目配置及组件
调整Db、Redis获取默认连接池名称,使用@currentServer配置
现在缓存的$ttl参数支持传递\DateInterval类型了
完善 LazyArrayObject
将Redis模块中获取到的实例对象,统一改为 Imi\Redis\RedisHandler
优化热更新提示内容、重启逻辑,改为增量方式,性能更高
新增支持构建框架预加载缓存,提升项目开发时的热更新性能
优化onShutdown()时,日志处理如果发生错误或异常,直接输出错误信息
不兼容的调整
Imi\Redis\Redis 类更名为 Imi\Redis\CoroutineRedisHandler (连接池中如果有指定,请修改)
方法验证抛出的异常信息,不再包含 "xxx Parameter verification is incorrect" 信息
调整验证注解的args参数格式,注意与之前版本不兼容
弃用Swoole内置序列化,改为 php 序列化。原因:Swoole官方未来将不再维护序列化功能
信息提示英文规范
修复
修复Db类获取默认连接池名称问题
修复常量注解处理错误
修复master进程的事件无法触发问题
修复服务器配置中注入HttpRoute失效问题
修复热更新在特定情况下filemtime warning问题
修复当使用Swoole MySQL驱动时,Result->getRowCount()报错问题
修复开启一键协程化时,文件缓存写入失败问题
修复一些场景下的可变参数处理问题
修复使用Swoole协程 MySQL 时,fetchAll \PDO::FETCH_COLUMN 如果不指定$fetchArgument,结果为null问题
修复热重启后,@app.pools配置更改无效问题
修复一处潜在的notice问题
修复出现重复中间件时的问题
修复因@serializable注解导致的,模型插入更新数据缺失问题
修复dev/ext生成问题
介绍
IMI 是基于 Swoole 开发的协程 PHP 开发框架,完美支持 Http、WebSocket、TCP、UDP 开发,拥有常驻内存、协程异步非阻塞IO等优点。
IMI 框架文档丰富,上手容易,致力于让开发者跟使用传统 MVC 框架一样顺手。
IMI 框架底层开发使用了强类型,易维护,性能更强。支持 Aop ,支持使用注解和配置文件注入,完全遵守 PSR-3、4、7、11、15、16 标准规范。
框架的扩展性强,开发者可以根据实际需求,自行开发相关驱动进行扩展。不止于框架本身提供的功能和组件!
官网:https://www.imiphp.com/
文档手册:https://doc.imiphp.com/
代码仓库:
码云:https://gitee.com/yurunsoft/IMI
Github:https://github.com/Yurunsoft/IMI
空项目:https://gitee.com/yurunsoft/empty-imi-demo
功能Demo:https://gitee.com/yurunsoft/imi-demo
寻有缘人
想要加入我们吗?开源项目不能只靠一两个人,而是要靠大家的努力来完善~
我们需要你的加入,你可以做的事(包括但不限于以下):
纠正拼写、错别字
完善注释
bug修复
功能开发
教程、博客分享
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解LINUX网络技术内幕
Christian Benvenuti / 夏安、闫江毓、黄景昌 / 中国电力出版社 / 2009-6 / 128.00元
Linux如此的流行正是得益于它的特性丰富及有效的网络协议栈。如果你曾经惊叹于Linux能够实现如此复杂的工作,或者你只是想通过现实中的例子学习现代网络,《深入理解Linux网络内幕》将会给你指导。同其他O'Reilly的流行书籍一样,《深入理解Linux网络内幕》清楚地阐述了网络的基本概念,并指导你如何用C语言实现。虽然早先的 TCP/IP经验是有用的,但初学者通过《深入理解Linux网络内幕》......一起来看看 《深入理解LINUX网络技术内幕》 这本书的介绍吧!