php教程技术文章
-
用 PHP stream 分块处理大文件时,核心是保持单个 chunk 的内存上限,正确区分 fread 的短读、EOF 和失败,并在不需要逐块转换时使用 stream_copy_to_stream。412 收藏 -
PHP 的 soundex 返回固定四字符键,metaphone 返回可变长度键且可用 max_phonemes 控制音素上限。本文从结果形态、检索选型、版本化切换和运行期排查说明两者的使用边界。412 收藏 -
PHP CLI 程序处理管道或重定向输入时,逐行读取适合大多数文本任务,但 EOF 判断、空行和大文件内存边界很容易写错。本文从 fgets(STDIN) 入手,整理逐行、整流和可控批量读取的选择,并给出可验证的退出条件。411 收藏 -
PHP PDO 绑定 LIKE 查询时,SQL 只保留占位符,程序先按数据库规则转义用户输入中的百分号、下划线和反斜杠,再把完整模式值绑定进去。本文用包含、前缀和后缀匹配示例说明如何安全表达搜索意图。411 收藏 -
DOMDocument 解析不可信 XML 时,默认不要打开实体替换和外部 DTD 加载;用 LIBXML_NONET 限制网络访问,并按 PHP/libxml 能力补充 LIBXML_NO_XXE。本文给出安全的最小配置、遗留 DTD 场景的隔离方式和升级检查清单。409 收藏 -
PHP OPcache 预加载适合放稳定、无请求状态且能跨请求复用的类和函数;本文给出 preload.php 配置、排除清单以及部署重启边界。409 收藏 -
PHP 8.4 的 Lazy Objects 通过 Lazy Ghost 和 Lazy Proxy 延迟创建实体。本文用最小示例说明初始化触发点、失败回滚、序列化、克隆、析构与对象身份边界。409 收藏 -
用 PHP DateTimeImmutable 处理跨时区时间时,关键是显式传入 DateTimeZone,并接住 setTimezone 和 modify 的返回值。本文从瞬时时刻、显示时区、输入边界和不可变对象传递说明怎样隔离时区副作用。409 收藏 -
PHP CLI 长任务不应靠强制终止收尾。本文用 pcntl_signal 接住 SIGTERM,在批处理检查点记录停止请求,区分当前批次完成与进程退出,并给出可回滚、可验证的部署处理方式。408 收藏 -
PHP PDO 绑定 LIMIT 报类型错误,通常是参数按字符串传给了预处理语句。本文说明如何校验分页输入、使用 PDO::PARAM_INT 绑定 LIMIT/OFFSET,并避免 execute 参数覆盖已有绑定。408 收藏 -
PHP PDO 使用预处理语句时,先将输入归一化,再用 PDO::PARAM_INT、PDO::PARAM_STR 和 PDO::PARAM_NULL 显式绑定,避免整数、字符串与 NULL 语义被隐式转换。407 收藏 -
开启 PHP session.use_strict_mode 后,旧系统可能因手工预设未初始化 Session ID 而读不到登录前状态。本文解释 Cookie、有效 Session 和严格模式的关系,并给出先启动会话、登录后轮换 ID 的改法。404 收藏 -
filter_var 返回 true 只说明 URL 结构符合 PHP 的校验规则,并不代表主机可解析、协议可用或域名属于业务白名单。本文用 PHP 示例拆开三层判断,补上安全的 host 白名单写法。403 收藏 -
从 PHP session.sid_length 的默认值、范围和弃用状态出发,构建一个最小会话示例,说明旧 Cookie、存储键、自定义处理器与安全配置之间的兼容边界。403 收藏 -
PHP 开启 pcntl_async_signals 后,信号处理器可能在主流程中被调度。本文用 pending 状态和 busy 标记把回调变成轻量入口,避免刷新任务重入。402 收藏