Skip to content

Releases: imiphp/imi

支持 Phar 模式运行,启动速度提升!

31 Aug 07:47
Compare
Choose a tag to compare

主要支持了 Phar 模式,经测试启动速度在挂载网络磁盘情况下提升巨大,在本机硬盘中启动的速度也略有提升。

新增:

  • 新增支持 phar

  • 新增支持定义模型虚拟字段,不参与数据库操作

  • 新增模型查询前后事件

  • 新增初始化时初始化项目及组件

  • 新增Worker进程初始化前后事件

  • 增加App::setLoader()、App::getLoader()方法

优化:

  • 调整命名、完善注释

  • 调整命令行工具报错现在也可以查看错误跟踪了

  • 增加项目命名空间不存在的判断和提示

  • 增加协程MySQL开启事务成功判断

  • @ Transaction 注解回滚前判断是否已开启事务

  • 调整连接池 getResource() 返回值类型

  • 调整服务器配置从server_xxx改为server.xxx

  • 提取封装Tool类,工具启动细节放入Tool类

  • 增强Imi::getNamespacePath()目录识别准确度

  • 去除ModelManager::getFields()方法依赖RequestContext

修复:

  • 修复热更新配置'status'=>false后无限重启问题

  • 修复File::path()处理protocol://格式路径时的问题

  • 修复工具类BUG

废除:

  • 废除了服务器配置server_xxx的用法,改为server.xxx

支持 Swoole 4.1.0 一键协程化,40余项改进

24 Aug 01:51
Compare
Choose a tag to compare

新增:

  • 适配支持 Swoole 4.1.0 一键协程化

  • 新增进程池支持

  • 新增模型生成时,如目录不存在则自动创建

  • 新增ProcessManager::runWithManager方法,可以在IMI.SERVERS.CREATE.AFTER事件中使用

  • 新增Result->getSql()、Result->getStatement()方法

  • 新增Manager、Worker、Process进程初始化时重新播种随机数

  • 为CoroutineChannelManager::pop()方法增加$timeout参数

  • 新增自定义进程运行时初始化连接池等

  • 新增使用文件锁实现进程唯一实例限制

优化:

  • 优化ConnectContext和Group的Redis初始化判断逻辑

  • 热更新进程现在绑定到Manager进程下

  • 优化模型生成视图,默认第一个字段为主键

  • 同步池子兼容swoole 4.0.3及以上

  • 优化报错追踪准确性

  • 模型中对数据库bit类型字段处理为bool类型

  • 优化模型保存时null值判定逻辑

  • 调整WorkerStart处理

  • 调整枚举文件、类文件缓存目录方法

  • 优化模型更新数据时支持两种命名的字段

  • 优化模型更新时数据先转为数组

  • 调整优化BeanFactory实例化类时参数处理逻辑

  • 修改热更新进程启动文本

  • 调整:IMI.INITED事件中对项目类进行扫描,热重启仅对服务器类有效

  • 封装提取获取imi命令行方法

  • 优化Result->get()、Result->getArray()当数据不存在时返回null

  • 增加热更新进程启动提示

  • 提取封装Bean类缓存相关方法

修复:

  • 修复 Swoole <= 4.0.4 下可能会出现的热更新崩溃问题

  • 修复数据库连接配置问题,使用username指定用户名

  • 修复ManagerStop事件触发失败

  • 修复CoroutineChannelManager::stats()方法

  • 修复ConnectContext Redis存储读取问题

  • 修复模型生成器nullable为反值的bug

  • 修复命名空间未引入

  • 修复模型带where条件某些情况存在的问题

  • 修复kv存储类问题

  • 修复缓存初始化错误

  • 修复模型更新时带有不想关的字段

废除:

  • 移除日志自动保存机制,现在日志会实时传入处理器

  • 废除日志中lastTrace项
    增加支持{errorFile}、{errorLine}

历经两周实战,做了30多项改进

13 Aug 02:10
Compare
Choose a tag to compare

RT,实战将继续中,IMI会更加完善!

  • 新增TcpController->encodeMessage()方法

  • 新增服务器启动输出信息

  • 增加命令行工具名称操作判断

  • 新增事件IMI.MAIN_SERVER.WORKER.START.APP

  • 新增模型生成后属性支持IDE代码提示

  • 新增模型增删改查事件

  • 新增模型set方法,支持从一个数组赋值到当前模型

  • 新增http not found处理器

  • 新增自动事务支持

  • 新增模型属性isset判断支持

  • 模型生成器增加生成进度以及完成提示

  • 修复使用传参-appNamespace形式启动服务器,无法正常热重启的问题

  • 修复错误日志记录文件位置错误

  • 修复模型save方法问题

  • 调整进程pid记录文件名

  • 优化支持服务器日志

  • 调整清除当前 worker 进程的 Bean 类缓存

  • 修复命令行工具中使用协程的问题

  • 继续修复项目注解加载问题

  • 去除启动时加载项目注解,工具中加载项目注解

  • 修复bean缓存未及时删除问题

  • 修复Model::select()方法没传条件报错问题

  • 修复启动时未加载项目注解

  • 完善错误、异常捕获

  • 修复阻止事件传播可能导致one失效问题

  • Logger现在统一使用App::getBean()操作

  • 调整JsonErrorHandler默认抛出异常

  • 致命错误保存日志

  • 新增错误及异常捕获日志处理

  • 修复日志$context中包含非标量值报错问题

  • 修复日志最后一条trace错误

  • 修复因WorkerStart中初始化协程连接,导致的请求可能会被先执行的问题

  • 修复日志最后一条trace错误

  • 调整composer中psr项目版本描述

  • 修正延迟收包处理

  • 修复KVStorage对非对象处理的问题

  • 修复http路由配置没有middlewares节报错问题

支持中间件+控制器开发WebSocket/TCP/UDP应用

30 Jul 02:11
Compare
Choose a tag to compare
  • 新增支持中间件+控制器开发WebSocket/TCP/UDP应用

  • 新增支持连接会话数据持久化

  • 新增获取分组中连接总数方法

  • 新增Redis分组redisDb属性指定数据库

  • 新增监听WorkerError事件

  • 开放一些BeanProxy方法

  • 模型生成支持视图

  • imi 服务器类中新增getSwoolePort()方法

  • 优化模型的字段、方法注释,加上数据库字段注释,更加方便理解

  • 优化数据库模型update/delete/save处理,现在当主键为null时,update/delete可能会抛出异常

  • 优化命名,将work改为worker

  • 优化Redis事务延迟收包处理

  • 连接数据持久化、连接分组Redis驱动心跳数据使用事务写入,防止极端情况

  • 补充服务器close事件的$reactorID参数

  • 提取获取进程ID的方法到工具类

  • 修复模型生成的前缀处理问题

  • 修复数据库查询对in和not in条件的处理错误

  • 修复Bean类缓存清除问题

新增支持使用控制器开发WebSocket服务&其它18项改进

23 Jul 01:08
Compare
Choose a tag to compare
  • 新增支持使用控制器开发WebSocket服务

  • 新增支持WebSocket连接逻辑分组

  • 新增Http路由匹配缓存机制

  • 现在Session::get()方法不传参数时,返回全部数据

  • 新增PHP内置Session的序列化和反序列化实现

  • Session支持a.b.c形式参数,Session::get('a.b.c')同Session::get('a')['b']['c']

  • 新增支持Session Prefix前缀

  • 支持在非RequestContext环境下使用PoolManager::use()方法

  • 调整RequestContext中的container为按需实例化

  • 同步Redis连接方式默认timeout改为68年(绝对够用!flag!)

  • 修复AtomicManager::sub()参数无默认值问题

  • 修复并发访问时,类似Session加载会出错的问题

  • 修复LazyArrayObject类问题

  • 修正设置进程名称的错误位置

  • 修正一个方法拼写错误

  • 解决BeanFactory中可能存在的变量名重复问题

  • 优化延迟收包recv()执行逻辑

  • 服务器事件修改优化

  • 调整Bean类实例化eval()改为include 缓存文件

周常更新,庆祝小米上市!imi:爱米,我米

09 Jul 01:53
Compare
Choose a tag to compare

周常更新,庆祝小米上市!imi:爱米,我米

  • 新增连接池资源掉线自动重连

  • 新增Model支持$model->propertyName读写

  • 实现局部中间件注解+配置

  • 新增热更新重启时清除apc、opcache缓存

  • 新增@view注解baseDir属性,支持设置基础路径

  • ServerRequest类属性增加默认值

  • 增加Uri类常用协议标准端口返回

  • 服务器启动时清除不必要的东西

  • 修复模型相关BUG

  • 修复进程启动工具错误

  • 修正PSR-7 Header处理

  • 调整BeanFactory实例化类构造方法调用时机

  • 修复实例化默认值问题

  • 修复Uri转字符串BUG

  • 修正withAddedHeader()值传入数组报错问题

  • 调整Imi\Util\File::path()参数为可变参数,支持无限个路径拼接

紧急修复报错问题

02 Jul 02:04
Compare
Choose a tag to compare
Pre-release
  • 紧急修复报错问题

新增支持业务代码热更新,其它多项增强和改进

02 Jul 01:08
Compare
Choose a tag to compare
  • 调整框架加载流程

  • 新增启动服务、停止服务、重新加载服务命令行工具

  • 新增支持热更新(两种方式任选:文件更新时间/Inotify扩展)

  • 新增支持使用注解定义和投递任务

  • 新增进程创建、运行支持

  • 文件日志驱动的异步写文件改为协程写文件

  • php渲染模版判断渲染参数是否为数组,避免其他类型数据报错

  • 调整服务器注解加载时机为WorkerStart事件

  • 移除不必要的类

  • 修复访问时不带sessionid报错问题

  • 修复@Listener注解优先级无效的BUG

  • 修复驼峰命名首字母为大写问题

  • 修复无参数工具使用-h参数时报错信息问题

支持 PHP 7.1 + Swoole 4.0,支持 Redis 模型

25 Jun 05:21
Compare
Choose a tag to compare
  • 框架依赖更新:php >= 7.1 + swoole >= 4.0.0 (之前为 php 7.0 + swoole 2.2.0)

  • 新增 Redis 模型

  • 新增双驼峰转换方法

  • 新增文件,目录创建操作方法

  • 新增session操作类自动创建目录的功能

  • 新增支持池子资源重置

  • 改进转换驼峰命名方法性能

  • 调整内存表key相关属性和方法,防止和字段冲突

  • 修复投递任务每次都在同一个task进程问题

  • 修复BaseAsyncPool->tryGetResource()问题

第一个版本

21 Jun 05:12
Compare
Choose a tag to compare
第一个版本 Pre-release
Pre-release

第一个版本