imi 是一款支持长连接微服务分布式的 PHP 开发框架,它可以运行在 PHP-FPM、Swoole、Workerman、RoadRunner 等多种容器环境下。它支持 HttpApi、WebSocket、TCP、UDP、MQTT 服务的开发。特别适合互联网微服务、即时通讯聊天im、物联网等场景!QQ群:17916227
修复在特定情况 PDO 捕获异常做离线检测 errorInfo 为 null 时的错误 (#576)
修复 AOP 热更新不生效 (#574)
修复 AOP 引用参数传 null 时无法正确获取到值 (#572)
模型关联支持跨数据库和跨连接池场景,模型关联注解新增 poolName
参数
模型 @JsonDecode
注解新增 arrayWrap
参数 (#569)
修复带 distinct 的分页查询器,记录数量返回不正确 (#571)
修复 whereBrackets 返回非数组值时,生成的 SQL 不带括号 (#571)
修复 PostgreSQL 模型在没有自增主键情况下使用 save() 执行错误的 SQL 语句 (#570)
修复 Redis 模型的虚拟字段也会被保存的问题 (#567)
修复 RedisModel 使用 Serializable、Serializables 注解后,影响保存的数据 (#566)
修复 Swoole pgsql Statement 绑定 bool 类型值 (#565)
修复 RedisModel 使用 Serializable、Serializables 注解后,影响保存的数据 (#566)
修复 Redis 模型的虚拟字段也会被保存的问题 (#567)
Full Changelog: https://github.com/imiphp/imi/compare/v2.1.49...v2.1.50
Redis 模型支持安全删除记录 (#560)
Redis 模型 hash_object
模式支持设置字段类型(json
/list
/set
) (文档) (#560)
Redis 模型 hash_object
模式在不启用 redis 序列化情况下支持强类型字段 (#560)
RedisModel::find()、generateKey()、generateMember() 改为参数非必传 (#560)
优化容器单例对象当 __construct() 或 __init() 有协程上下文切换,不会导致单例被覆盖 (#562)
优化代码 (#561)
支持 MySQL 高性能分页查询(大表分页类) (#542)
生成模型相关改进 (#537)
数据库迁移组件(imi-migration),支持一种新的迁移方式
优化软删除查询构建器及时释放内存(非泄露) (#547)
简化框架配置 (#543)
优化了一些代码
改进服务相关 (#541)
优化启动服务命令,修复 swoole 启动服务指定 workerNum
参数无效
设置 Workerman 进程名称
修复 Swoole 下等待连接事件执行完才执行 receive 的机制偶尔会失效 (#551)
修复 ConnectionContextStore
初始化 (#552)
修复可能存在的定时器未捕获错误 (#550)
修复事务嵌套时,事件触发不正确 (#548)
修复事件名称是动态设定时,仅触发一次的事件被执行后,有残留数据导致内存泄漏 (#546)
修复 SWOOLE_PROCESS
模式获取 master 进程 pid (#545)
修复生成模型基类中的 ddlDecode
值有时不正确
修复配置 beanScan
后扫描命名空间错误 (#540)
修复同一个目录被多个命名空间映射,扫描报错 (#540)
修复 AnnotationManager
获取注解方法,传入 $onlyFirst=true
找不到注解时特定情况不返回 null (#538)
修复极端情况下某些类初始化不完全 (#553)
完善了一些测试
更新了一些文档
修复覆盖率测试和偶发测试失败 (#539)
修复 Windows 测试 Workerman Gateway,启动服务时端口检测不完全
每天北京时间 0 点定时测试 PHP8.2 + Swoole master 分支(pdo_pgsql hook 跑通)
更新 php-cs-fixer 版本 (#536)
数据库查询构建器支持全文搜索(MySQL+PostgreSQL) (#533) (文档)
支持 PostgreSQL 生成模型配置 bean 和 incrUpdate 参数 (#524)
增强:Imi\Lock\Lock 类中的相关方法增加 $lockId 参数 (#520) (文档)
pgsql 模型字段的创建更新时间 time、timetz、timestamp、timest 支持设置时间精度 (文档)
支持绑定上传文件对象到控制器方法参数 (#531) (文档)
统一静态类声明方式
优化:非 Swoole、Workerman 环境使用 Timer 抛出异常
删除无用类
优化模型 DDL 注解的 decode 参数,允许设为 null
优化 pgsql 插入数据获取最后插入ID的性能
改进模型自动创建时间和更新时间 (#525)
优化格式化可读字节单位算法
优化了一些代码
修复并标记废弃 Imi\Util\DateTime::getLastWeek(),增加 Imi\Util\DateTime::getPrevWeek()
修复 DelayServerBeanCallable、DelayBeanCallable 引用返回值
修复 Imi\Util\File::enumFile()、Imi\Util\File::enumFileSync() 错误的返回值注释
修复 FilterableList
修复 Request::getRequestTarget() 错误的值、ServerRequest::post() 不支持非数组、MemoryStream 偏移量处理
修复 Imi\Util\Text::endwith()
修复 PHP 8.2 兼容性(Creation of dynamic property)
修复事务嵌套,部分回滚事务
修复数据库驱动 lastStmt 赋值类型错误
修复非 POST 请求使用 getParsedBody() 无法获取 JSON 反序列化数据 (#523)
修复 Swoole 5 PostgreSQL 客户端 lastInsertId
修复 Swoole BASE 模式下获取 masterPid 错误 (#526)
修复 BASE 模式下使用 masterPID 的地方改用 managerPID
修复查询构建器 join
方法传入 $where
参数的报错 (#529)
修复 pgsql 生成模型,计算长度和精度的错误
修复判断事务时Db实例错误 (#532)
修复在 pgsql 字段默认值是表达式时,模型字段默认值不正确的问题 (#534)
修复数据库驱动 Statement 类在未查询时也会更新最后插入ID的问题 (#535)
优化中文分词搜索算法,搜索结果更加精确
数据库迁移组件文档中,生成同步命令由migration/patch 修改migration/dump (#528)
完善文档 (#530)
Full Changelog: https://github.com/imiphp/imi/compare/v2.1.46...v2.1.47