分类: MySQL
-
本文介绍了在 Yii 2.0 中优化服务器健康检查实现的过程。通过分析源码发现,数据库检查中的 getIsActive() 方法是冗余的,直接使用 open() 方法即可。针对 Redis 连接,虽然 ping 命令常用于测试连接,但其实质仍需先执行 open()。经过错误密码测试验证后得出结论,为保持检测方式统一,无论是数据库还是 Redis,均应统一采用 open() 方法进行连接检查。
-
为了解决一次发布需分别调用多个渠道接口的问题,文章探讨了在 Yii 2.0 中实现一键多渠道发布的方案。对比了控制器内部调用与 HTTP 调用两种方式后,因架构隔离和安全限制,最终决定采用内部 HTTP 调用方案。通过修改控制器过滤器、编写服务类及 HTTP 模型类,实现了任务组的批量同步发布。经日志与数据库验证,该方案成功完成了对企鹅号、微信等渠道的批量写入,符合预期。
-
本文记录了在 Rancher 中通过克隆容器部署集群,并配置负载均衡验证流量分发的过程。针对命令行下 Redis 锁定频率过高的问题,通过调整执行间隔、优化事务同步时间及更新逻辑,成功降低了锁定频率并提升了执行性能。测试结果验证了在不同任务数量下的同步频率平均值符合预期的理论计算公式。
-
针对 Nginx 与 FastCGI 环境下日志表数据量达到 GB 级时,查询最后一页出现 504 Gateway Time-out 超时的问题,通过分析定位了本地环境与生产环境的配置差异。在本地增加 fastcgi_read_timeout 并调整 PHP 脚本最大执行时间后问题解决,但在生产环境中排查发现,由于请求经过 Kong 网关,超时原因出在网关层面而非后端服务,最终确认由运维人员处理网关配置。
-
文章针对在 Yii 2.0 中实现跨多表数据唯一性验证的需求,通过核心验证器 unique 结合 filter 回调函数,利用匿名函数修改查询对象,将模型关联字段、常量状态以及请求参数数组存储为全局变量后注入验证逻辑,最终实现了针对文章标题与渠道任务关联条件的复杂唯一性校验,生成的 SQL 查询符合预期。
-
Navicat for MySQL 不支持直接编辑数据库名,文章通过先创建新数据库,再将原数据库的结构与数据导出为 SQL 文件并导入至新数据库,最后删除旧数据库的方式,实现了数据库重命名的操作,完成了新旧数据库结构与数据的迁移。
-
本文介绍了在 Yii 2.0 生产环境中开启 Schema 缓存以优化性能的操作,包括修改配置文件、验证 Redis 缓存生成及手动清理缓存的命令。测试发现清除 Schema 缓存后并非立即刷新数据,而是在下次调用相关表结构时触发更新。文章还说明了在 Docker 容器部署和 Rancher 升级时执行数据库迁移与清理命令的流程。性能测试对比显示,开启缓存后接口并发峰值反而略有下降,因此决定暂时保留该配置不回退。
-
针对 Yii 2.0 中企鹅号任务发布后入库失败无法查询记录的问题,文章放弃了客户端冗余存储方案,采用新建预发布日志表并增大字段长度的设计。通过创建继承 ActionFilter 的过滤器,在动作执行后根据返回码非 10000 时插入记录,并利用 UNION ALL 语法合并查询结果,成功实现了入库成功与失败皆可查询的功能。
-
文章针对 Yii 2.0 默认不支持 MySQL 的 MEDIUMTEXT 等字段类型的问题,通过参考 SchemaBuilderTrait.php 源码,在控制台目录下新建自定义 Trait 文件并添加相应类型支持。操作过程包括复制核心文件、实现扩展方法以及在迁移文件中引用该 Trait。执行迁移后,成功创建了包含 MEDIUMTEXT 类型字段的数据库表,经验证字段类型符合预期。
