分类: PHP
-
文章记录了一个 GraphQL API 耗时长达 7 秒的排查过程。经 Laravel Telescope 和独立客户端测试,实际执行时间仅约 1.8 秒。问题根源在于 Windows 10 环境下的 Nginx 与 PHP FastCGI 默认只能同时处理单一请求,导致请求排队。通过调整 Nginx 配置并启动多个 php-cgi 进程绑定不同端口,实现了并发处理。最终刷新页面测试,请求耗时缩短至 2 秒左右,符合预期。
-
在 Blade 视图中渲染 JSON 数据时,默认的双大括号会将双引号转换为 HTML 实体,导致前端解析困难。若直接使用非转义语法,虽然解决了实体问题,却可能因 URL 值未正确转义而导致 JSON 结构错误。文章最终采用 addcslashes 函数对字符串进行 C 语言风格转义,从而在防范潜在安全风险的同时,生成符合规范且便于前端解析的 JSON 结构。
-
本文记录了在 Laravel 6 中运行存储于 MySQL 的 Blade 代码并获取输出的过程。起初尝试将代码手动编译为原生 PHP 并通过输出缓冲包含文件来运行,虽验证了可行性,但因可维护性问题未被采纳。最终方案保留了后端自动完成 Blade 编译至 PHP 模板的流程,以满足前端要求并实现代码块的正常渲染。
-
在使用 Homestead v13.2.1 运行项目时,因默认 PHP 8.0 版本与软件包依赖冲突导致 Composer 更新报错。通过修改 Homestead.yaml 配置指定站点 PHP 版本,并执行 vagrant reload –provision 重启虚拟机。在解决共享文件夹为空的问题后,下载 composer.phar 并使用 php7.4 命令执行更新,最终成功切换至 PHP 7.4.14,访问首页确认环境符合预期。
-
在 PHP 7.4 环境下运行代码时出现了 Illegal offset type in isset or empty 报错。经排查,变量 $setting 的值为对象,而代码直接尝试将其作为数组偏移量进行访问。通过将 $setting[‘settingId’] 转换为字符串后,再次打印数值确认转换成功,问题随之解决,程序不再报错。
-
针对PHP 7.4中使用ltrim函数删除字符串开头字符时,导致下划线前字符串丢失的问题进行排查。发现原因在于第二个参数末尾包含斜杠,导致函数将下划线也视为需删除的字符。调整参数去掉末尾斜杠后,ltrim虽能返回预期结果,但最终决定改用substr函数来实现字符串截取,确保逻辑稳定且结果符合预期。
-
本文记录了在应用 .gitignore 类规则时解决配置未生效问题的过程。针对 /assets/apps/ 目录下的特定文件未被忽略的情况,确认 TOGoS/PHPGitIgnore 解析器不支持双星号语法。随后修改配置规则,限定 /apps 目录下仅保留 .php 文件,最终成功实现了忽略其他类型文件的目标,符合预期效果。
-
针对模板目录中无需忽略的文件被写入数据库的问题,文章尝试使用 PHP 的 RecursiveFilterIterator 类实现自定义过滤。通过新建 ThemeViewIgnoreFinder 获取忽略规则,并扩展 ThemeViewRecursiveFilterIterator 实现 accept 方法,解决了运行时报错及子类获取问题。最终修正了文件路径过滤规则,成功避免了如 node_modules 等特定目录及文件被写入数据库,达到了预期效果。
-
针对文件夹中存在类似 .gitignore 的配置文件 .themeignore 需要解析并应用过滤规则的问题,文章介绍了通过 Composer 安装 TOGoS/PHPGitIgnore 组件的方法。作者参考测试文件实现了具体的解析逻辑,成功通过布尔值判断文件路径是否应被忽略。最终结论显示该方法能够准确生成过滤结果,并可用于基于原目录遍历创建仅包含所需文件的新目录。
-
PHP 7.4 可以通过 ZipArchive 类的 extractTo 方法实现 ZIP 文件解压。本文提供了具体实现参考,演示了如何将压缩文件内容释放到指定目录。操作结果显示,解压后的目录结构与原始文件名保持平级且同名,满足了基础的文件解包需求。
