php教程技术文章
-
用 PHP readonly 属性或 readonly class 封装经过校验的配置对象,说明构造阶段赋值、数组与对象边界,以及 PHP 8.1 和 8.2+ 的兼容写法。138 收藏 -
PHP 8.4 属性钩子中,set 内用精确的同名属性语法写入的是背后存储,不会再次触发自身;本文还区分虚拟属性、动态访问和跨属性钩子带来的递归风险。136 收藏 -
PHP 枚举与数据库状态字段如果同时演进,最容易在重命名、删值和分批发布时产生漂移。本文给出稳定 backed value、集中映射、旧值兼容和分阶段迁移的完整做法。135 收藏 -
PHP 8.4 新增的 array_find() 会按回调条件返回数组中首个匹配元素的值;本文说明 value、key 参数、短路行为、null 未命中、array_find_key() 与旧版本 foreach 兼容写法。135 收藏 -
Laravel 配置缓存后修改 .env 不生效,通常与配置快照或长驻进程有关。本文用最小示例说明 env 与 config 的读取范围,以及开发、部署、队列和 Octane 的更新边界。134 收藏 -
PHP array_is_list 只看数组键是否从 0 开始连续递增。本文用多组输入说明空数组、稀疏键、字符串键和旧版本兼容处理。133 收藏 -
PHP-FPM 的 pm.max_children 不能只按 CPU 核数拍脑袋。本文从内存、CPU、数据库连接和排队风险四个约束估算起始值,再用 status 页面判断是否需要继续调整。132 收藏 -
文章 · php教程 | 2星期前 | JSON · api设计 · php教程 · php json_encode JsonSerializable JSON_THROW_ON_ERROR jsonSerialize
PHP 对象实现 JsonSerializable 后,可用 jsonSerialize 显式选择、改名和组合 JSON 字段,并排除敏感属性。本文给出嵌套对象、错误处理与兼容策略的完整写法。129 收藏 -
文章 · php教程 | 5天前 | 文件上传 · nginx · php-fpm · 故障排查 · php教程 · php-fpm session.upload_progress PHP上传进度 fastcgi_request_buffering 请求缓冲
PHP session.upload_progress 只有在 PHP 持续收到 multipart 请求体时才能更新。本文从表单字段、session 轮询、Nginx FastCGI 请求缓冲和清理边界逐层排查为什么进度只在完成时跳变。126 收藏 -
PHP 8.2 提供 SensitiveParameter 属性,用于避免密码、令牌等参数原值出现在异常堆栈中。本文从未标记参数的泄露风险讲起,说明属性写法、SensitiveParameterValue 的自动包装、手动取值边界,以及日志和第三方库仍需补做的脱敏检查。125 收藏 -
PSR-7 请求体是带游标的 StreamInterface,getContents() 读取后可能到达末尾。本文区分 getContents、__toString、rewind 和 seek(0),说明如何判断可回退能力,并在不可回退时用新流和 withBody() 让签名校验、日志与业务解析共享请求内容。123 收藏 -
用 PHP Intl 的 NumberFormatter 按地区格式化货币和小数,说明 locale、保留位数、舍入模式与自定义 pattern 的使用边界。122 收藏 -
文章 · php教程 | 1星期前 | 队列 · PHP · laravel · 工程实践 · 批处理 · Laravel 队列 失败重试 Job Batching queue:retry-batch
Laravel 队列批处理遇到失败项时,单个 Job 的 tries、backoff 与批次的 catch、allowFailures 并不是同一层重试机制。本文用批量同步场景拆解取消语义、失败批次重试入口和幂等边界,帮助你只重试可恢复且不会重复写入的数据。121 收藏 -
Composer 在生产环境通常应先用 --optimize 生成 classmap,再根据是否存在运行时生成类决定使用 authoritative classmap 或 APCu。本文围绕 dump-autoload 给出部署命令、取舍和最小检查清单。118 收藏 -
从 Throwable、Exception、Error 和诊断错误的边界出发,整理 PHP 入口处理器、日志记录、生产响应与最小回归检查的统一方案。117 收藏