分类: PHP
-
文章针对Redis setnx指令无法设置过期时间的问题,提出了三种解决方案。方案一使用Multi/Exec包裹Expire确保原子性;方案二利用SET命令扩展功能实现并引入随机值防止误删;方案三通过时间戳判断与getset避免死锁。分析指出方案三实现复杂且存在并发隐患,最终决定优化方案二,结合MySQL乐观锁解决业务执行超时问题。
-
针对机试中设计高精度加法函数的需求,在不使用 bcadd 等自带函数的前提下,文章提供了一种支持长数字相加且不损失精度的实现方案。该方案通过字符串操作处理数值,在忽略负数的前提下完成了加法运算。经测试,将 64474.47265 与 24562.45124 相加,结果为 89036.92389,符合预期。当前版本对请求参数的容错处理尚待完善。
-
容器更换基础镜像后,在特定 Rancher 环境变量开启时启动失败并提示模块已加载。经排查,原因为命令行执行时重复加载了 gd、exif 和 sockets 扩展。最终通过修改 Dockerfile,利用 sed 命令从配置文件中删除对应扩展的加载项,解决了重复加载报错问题,确保了容器在环境变量开启时成功启动。
-
本文针对公有云com环境数据向csp环境迁移时程序版本不一致且无法升级的问题,介绍了实现流程。通过分析Git日志找出14个数据库迁移文件的差异,确认多出的SQL主要为表结构调整。在无法统一结构的情况下,将两个数据库导入本地,编写支持租户ID参数的迁移命令,使用事务处理并逐一迁移表。文章记录了pa_plan表的迁移过程,成功将4个租户的数据迁移至csp环境,并探讨了潜在的主键冲突及关联表处理问题。
-
在请求企鹅号视频文件分片上传接口时出现 Curl error #55 TCP connection reset by peer 报错。经排查,视频文件及分片参数计算均正确,状态显示上传至第 5 个分片失败。使用相同文件重新上传成功,未复现该问题。初步判断为网络抖动或服务器不稳定导致的偶发性连接中断,开发人员无法在本地环境稳定复现,暂需后续持续观察。
-
在部署项目到华为云ARM架构服务器时,因基础镜像导致PHP版本变更为7.2.20,与Composer依赖要求的7.3.0版本冲突。解决方法是修改composer.json将PHP版本要求降低至7.2.0,同时将本地环境切换至7.2.14以保持一致。随后删除vendor目录和composer.lock文件,重新执行composer install,最终健康检查脚本正常响应,问题解决。
-
本文针对在接口调用结束后统一发送多条操作日志至中台系统的需求,探讨了在 Yii 2.0 中利用 Yii::$app->params 设置与获取全局变量的实现方法。文章介绍了通过编辑配置文件和语言包对日志消息进行分类与模板配置的过程,演示了如何编写方法将生成的日志存入全局变量,并在 EVENT_AFTER_REQUEST 事件触发时判断并获取变量中的记录,最终实现了一次 HTTP 请求批量发送日志的预期效果。
-
在 PHP 环境中遇到 Notice: Unknown: file created in the system’s temporary directory 报错。排查 php.ini 配置发现,该错误由文件上传时使用的临时目录不存在引起。通过新建对应的临时目录,成功解决了报错问题,系统恢复正常运行。
-
在 Windows 10、Nginx 1.10 和 PHP 7.4 环境中上传 286MB 文件时遇到 413 Request Entity Too Large 报错。经检查 PHP 配置限制已设为 1024M,问题实际源于 Nginx 默认限制。通过在 Nginx 的 server 配置段中添加 client_max_body_size 1024M 并重启 Nginx 与 PHP 服务后,报错不再出现,问题成功解决。
-
文章记录了在 Laravel 5.4 环境中遇到 Call to undefined function exif_read_data() 报错的排查过程。经检查发现是服务器未安装 Exif 扩展导致,随后在 Windows 环境下通过编辑 php.ini 文件取消相关扩展前的分号注释并重启服务,最终确认扩展加载成功,图片上传恢复正常,问题得以解决。
