分类: PHP
-
针对 Yii 2.0 中 Redis ActiveRecord 出现主键 ID 重复的问题,经排查发现是由用于存储索引的 Redis 键值重复导致。通过本地环境复现,确认该组件无法确保主键 ID 唯一性。最终决定放弃插入操作,仅执行更新逻辑,若 Redis 中记录不存在则响应 404,以此防止新数据产生重复,而对于已有的重复数据则需手动处理。
-
本文探讨了在 Yii 2.0 中配置多个数据库应用组件时 Gii 的代码生成流程。文章指出,当选择非默认数据库连接 ID 时,表名下拉列表仅显示对应的表,生成的模型文件会包含 getDb() 方法;而选择默认数据库 ID 时,初始可能无法显示表列表需手动填写,且生成的模型不包含 getDb() 方法。此外,执行预览或生成操作后,默认数据库的表列表即可正常显示。
-
本文记录了将 /vendor 目录加入 Git 仓库以配合 Docker 部署的排查过程。起初因删除 composer install 导致 Rancher 启动失败,经分析发现 vendor 目录下存在 .git 子目录阻碍了文件提交。通过删除 .git 目录并重新提交,同时使用 composer install –no-dev 优化依赖,最终解决了迁移命令报错问题,并将 Jenkins 构建时间大幅缩短。
-
为了解决一次发布需分别调用多个渠道接口的问题,文章探讨了在 Yii 2.0 中实现一键多渠道发布的方案。对比了控制器内部调用与 HTTP 调用两种方式后,因架构隔离和安全限制,最终决定采用内部 HTTP 调用方案。通过修改控制器过滤器、编写服务类及 HTTP 模型类,实现了任务组的批量同步发布。经日志与数据库验证,该方案成功完成了对企鹅号、微信等渠道的批量写入,符合预期。
-
在安装用于提取多媒体文件信息的 PHP 脚本 getID3 时,通过 Composer 执行安装命令遭遇 SSL 握手超时及无法启用加密的报错。参考相关文档后,在命令行工具中设置 HTTP 代理,再次执行安装命令即可顺利完成操作,成功解决因网络连接问题导致的安装失败。
-
本文记录了在 Rancher 中通过克隆容器部署集群,并配置负载均衡验证流量分发的过程。针对命令行下 Redis 锁定频率过高的问题,通过调整执行间隔、优化事务同步时间及更新逻辑,成功降低了锁定频率并提升了执行性能。测试结果验证了在不同任务数量下的同步频率平均值符合预期的理论计算公式。
-
文章介绍了在 Yii 2.0 中利用 Docker、Supervisor 及 Redis 锁定机制实现控制台命令集群部署的方法。通过改造 Redis 锁定逻辑,在同步任务前获取锁,结束后释放锁,确保同一租户的同步任务在多台服务器间不重复执行,解决了冗余问题。测试验证了该方案能显著提升任务处理性能与同步即时性,同时给出了同步间隔的计算公式及容器数量建议。
-
针对 Nginx 与 FastCGI 环境下日志表数据量达到 GB 级时,查询最后一页出现 504 Gateway Time-out 超时的问题,通过分析定位了本地环境与生产环境的配置差异。在本地增加 fastcgi_read_timeout 并调整 PHP 脚本最大执行时间后问题解决,但在生产环境中排查发现,由于请求经过 Kong 网关,超时原因出在网关层面而非后端服务,最终确认由运维人员处理网关配置。
