内容简介:距离上次发布差不多一个月了,这期间 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修复
-
功能开发
-
教程、博客分享
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ppk谈JavaScript
Peter-Paul Koch / 淘宝UED / 人民邮电出版社 / 2008-4 / 59.00元
本书全方位介绍了JavaScript,主要讨论了浏览器兼容性、可访问性、底层语法以及与HTML结构层的协同等问题。书中既包括理论性的讲解,又给出了相关的示例脚本以进行进一步阐述。通过8个真实项目示例,介绍了JavaScript核心语言、BOM、事件处理、DOM、修改CSS样式表以及数据检索等内容。 本书适合具有一定网页开发经验的Web开发人员阅读。一起来看看 《ppk谈JavaScript》 这本书的介绍吧!