Releases: imiphp/imi
支持 Phar 模式运行,启动速度提升!
主要支持了 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余项改进
新增:
-
适配支持 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多项改进
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应用
-
新增支持中间件+控制器开发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项改进
-
新增支持使用控制器开发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:爱米,我米
周常更新,庆祝小米上市!imi:爱米,我米
-
新增连接池资源掉线自动重连
-
新增Model支持$model->propertyName读写
-
实现局部中间件注解+配置
-
新增热更新重启时清除apc、opcache缓存
-
新增@view注解baseDir属性,支持设置基础路径
-
ServerRequest类属性增加默认值
-
增加Uri类常用协议标准端口返回
-
服务器启动时清除不必要的东西
-
修复模型相关BUG
-
修复进程启动工具错误
-
修正PSR-7 Header处理
-
调整BeanFactory实例化类构造方法调用时机
-
修复实例化默认值问题
-
修复Uri转字符串BUG
-
修正withAddedHeader()值传入数组报错问题
-
调整Imi\Util\File::path()参数为可变参数,支持无限个路径拼接
紧急修复报错问题
新增支持业务代码热更新,其它多项增强和改进
-
调整框架加载流程
-
新增启动服务、停止服务、重新加载服务命令行工具
-
新增支持热更新(两种方式任选:文件更新时间/Inotify扩展)
-
新增支持使用注解定义和投递任务
-
新增进程创建、运行支持
-
文件日志驱动的异步写文件改为协程写文件
-
php渲染模版判断渲染参数是否为数组,避免其他类型数据报错
-
调整服务器注解加载时机为WorkerStart事件
-
移除不必要的类
-
修复访问时不带sessionid报错问题
-
修复@Listener注解优先级无效的BUG
-
修复驼峰命名首字母为大写问题
-
修复无参数工具使用-h参数时报错信息问题
支持 PHP 7.1 + Swoole 4.0,支持 Redis 模型
-
框架依赖更新:php >= 7.1 + swoole >= 4.0.0 (之前为 php 7.0 + swoole 2.2.0)
-
新增 Redis 模型
-
新增双驼峰转换方法
-
新增文件,目录创建操作方法
-
新增session操作类自动创建目录的功能
-
新增支持池子资源重置
-
改进转换驼峰命名方法性能
-
调整内存表key相关属性和方法,防止和字段冲突
-
修复投递任务每次都在同一个task进程问题
-
修复BaseAsyncPool->tryGetResource()问题
第一个版本
第一个版本