标签: ActiveRecord
-
针对 Yii 2.0 中 Redis ActiveRecord 出现主键 ID 重复的问题,经排查发现是由用于存储索引的 Redis 键值重复导致。通过本地环境复现,确认该组件无法确保主键 ID 唯一性。最终决定放弃插入操作,仅执行更新逻辑,若 Redis 中记录不存在则响应 404,以此防止新数据产生重复,而对于已有的重复数据则需手动处理。
-
本文基于 yii2-app-advanced 模板新建接口应用,利用 yii2tech 扩展实现 ActiveRecord 软删除。通过数据库迁移调整用户状态字段,配置行为类将删除操作转为状态标记,利用 Gii 生成 ActiveQuery 并自定义查询类以层级继承方式过滤数据,最终实现了 RESTful 接口下符合预期的数据增删改查及软删除逻辑。
-
本文介绍了在 Yii 2 Starter Kit 中实现多租户数据库动态配置的过程。通过自定义 Connection 类和 ActiveRecord,调用多租户系统的接口获取主机名等配置属性,在数据库连接打开前完成初始化。文章解决了因动态配置导致的日志组件与 RBAC 组件报错,并通过修改组件注册逻辑解决了数据库连接数过多的问题。最终实现了基于租户 ID 的动态连接,并利用 Redis 缓存接口响应和数据库结构,有效减少了 HTTP 请求次数。
-
本文介绍了在 Yii 2.0 高级模板中实现模型分层的具体流程。文章将模型划分为负责数据存取接口的数据层与负责业务逻辑的逻辑层,通过在 common 目录下新建 logics 目录并调整文件继承关系,实现 MySQL 与 Redis 模型的数据与逻辑分离,最终在 api 模块中继承逻辑层代码,从而完成项目结构的清晰化重构。
-
本文针对基于Yii 2的ActiveRecord导致Redis CPU使用率达到100%的问题进行了分析。通过监控发现,随着比赛数据增加,响应时间恶化,Redis CPU飙升。经排查,deleteAll和count查询方法在模型Key数量较大时消耗了大量资源。验证测试表明,将count调整为exists以及重构部分ActiveRecord为Redis原生命令后,CPU使用率显著下降。最终结论是insert性能优于one/exists,count/all消耗最大,建议在单模型Key数量超过10000时避免使用ActiveRecord进行查询操作。
