内容简介:距离上次发布差不多一个月了,这期间 imi 稳步推进,修复各项问题的同时,增加了不少实用组件和注解。此次更新,在开发项目的体验也有巨大的提升。imi 的热更新采用了最新的增量更新技术,原本我们的实际项目在 WSL 下热重启需要 6 秒(根据文件增多,逐渐变慢),现在使用
距离上次发布差不多一个月了,这期间 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://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修复
-
功能开发
-
教程、博客分享
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Google's PageRank and Beyond
Amy N. Langville、Carl D. Meyer / Princeton University Press / 2006-7-23 / USD 57.50
Why doesn't your home page appear on the first page of search results, even when you query your own name? How do other web pages always appear at the top? What creates these powerful rankings? And how......一起来看看 《Google's PageRank and Beyond》 这本书的介绍吧!