分类: PHP 7.4
-
在使用 Yii 2 框架的 HTTP 客户端扩展上传文件时,遇到内存耗尽报错的问题。通过本地测试发现,内存占用约为文件大小的 3 倍。由于暂无代码层面的内存优化方案,最终采取修改 php.ini 配置文件,增加 memory_limit 值的方法来解决。当该值设置为 4096M 时,可成功上传 1.01GB 的文件;设置为 6144M 时,则能够解决 1.44GB 文件的上传报错问题。
-
文章基于 Yii 2 框架实现了将远程资源文件下载至服务器并另存为指定文件名的功能。初始方案因直接读取内容导致下载大视频时内存占用高达 400MB,甚至超出内存限制而报错。经重构代码,利用 cURL 传输机制通过设置输出文件流,实现了下载同步写入,最终将内存占用降至约 7MB,解决了大文件下载受限于内存配置的问题。
-
本文介绍了在 Yii 2.0 中解决基于文章发布时间范围筛选账号数量排行的问题。通过调用 onCondition 方法在 JOIN 查询的 ON 部分指定状态额外条件,并新增配置 filterAttributeName 的过滤器来实现关联表记录创建时间的筛选。最终,通过接口地址传递相关参数,成功生成符合预期的 SQL 查询语句并获取了正确的响应结果。
-
本文探讨了在 Yii 2.0 中处理表结构多重关联时,基于 ActiveDataFilter 实现查询过滤的方法。文章针对主表通过中间表与多张附表关联,且需最终依据附表关联的分类表字段进行过滤的场景,通过配置搜索模型的 attributeMap 设置不同关联别名,并修改序列化文件重置数据,实现了通过指定字段查询主表数据的最终目的。
-
文章介绍了在 Yii 2.0 中通过命令行生成数据库迁移类并为表添加多个字段的方法。通过遵循 add_xxx_to_yyy 的命名格式并配合 fields 参数,可自动生成包含 addColumn 和 dropColumn 的类文件。编辑该文件补充字段注释与顺序后,使用提交命令升级数据库结构,最终验证表设计符合预期。
-
在 Rancher 中升级容器时遇到报错:CHANNEL_PUB_API_CFG_APP_AVATAR_UPLOAD_PATH: unbound variable。即使在管理界面中添加了相关环境变量,问题依然存在。通过在环境变量中赋予具体值可暂时解决,但最终排查发现是与变量名称特殊性有关。删除配置文件中对应的环境变量并在 Rancher 中移除相关配置后,容器升级成功,问题彻底解决。
-
针对 Yii2 队列扩展 Redis 驱动中 info 命令显示 reserved 状态队列一直存在的问题,在确认系统日志无异常且还原队列作业代码后,虽能短暂恢复正常,但长时间运行后故障依旧。通过排查发现 attempts 选项生效但 reserved 状态仍积压,最终将 Supervisor 配置中的 numprocs 值调整为 2,启动多个 worker 后,该状态队列持续时间大幅缩短至 10 分钟左右,整体队列处理可在半小时内完成,问题得到有效解决。
-
本文记录了在 Yii 2.0 中实现基于 ActiveDataFilter 的 count 别名字段排序的过程。通过修改入口文件配置 yii\data\Sort,新增了 channel_app_task_count 字段用于统计特定状态的任务数量并支持降序排列。经日志验证 SQL 语句符合预期,最终调整了序列化文件以保持响应字段与表结构一致,虽存在无需排序时执行冗余 count 语句的问题,但目前影响可忽略。
-
本文探讨了在 Yii 2.0 框架中使用 ActiveDataFilter 实现对不存在字段的筛选参数支持。针对选题列表中通过程序计算得出的“是否已延期”字段需求,文章分析了计算规则并推导出待生成的查询 SQL。最终结论指出,若需让表中不存在的字段参与筛选,必须将其转换为表中已存在的字段,从而利用框架自带的底层实现,避免手动转换筛选参数。
