news 2026/7/24 3:29:22

PHP 基金会宣布:Streams 现代化 将引入事件循环与异步新能力

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP 基金会宣布:Streams 现代化 将引入事件循环与异步新能力

什么是 PHP Streams?

在讨论具体改进之前,先回顾一下 Streams 的概念以及它的意义。

自 2001 年左右引入以来,PHP Streams 提供了一种统一处理文件与网络 I/O 的方式,使文件、套接字或内存等不同来源的数据都能通过一致的 API 与同一组函数访问。

随着时间推移,PHP Streams 被证明既强大又灵活,但部分实现没有跟上现代用例、性能预期和系统能力的演进。本次计划旨在让 Streams 更快、更安全,也更易于为现代 PHP 应用扩展。

整个工作范围被划分为四个子项目。

性能与稳定性提升

这一部分关注的是改进 PHP Streams 在复制与定位(seeking)时的性能和一致性。

Stream 复制仍有优化余地。比如复制大文件或处理网络传输时,可以借助 Linux 上的 io_uring 等异步 I/O 机制加速。同时还要避免 memory-mapped 文件可能引发的崩溃。因此目标是逐步淘汰 mmap 的使用,并在即将推出的 I/O API 中引入新的复制 API,在可用的平台上调用 io_uring 或其他系统特性。

当前 filtered streams 的寻址存在问题,导致行为出现不一致。开发者在使用 filters 时,经常会遇到无法回到开头或跳过数据的限制。

计划将引入新的寻址 filter API,让可寻址的 stream 支持 seeking,并在不支持的情况下明确禁止。例如,回到开头应该始终可行,但并非所有 filter 都支持任意位置的寻址;有些可以,有些不行,因此基金会希望通过全新的内部 API 来表达这些差异。

错误处理与监控增强

这一部分主要聚焦新的错误报告机制及更多 hooks。目前,很多底层 I/O 错误在用户态的呈现并不一致。目标是标准化 Streams 的错误报告方式,便于开发者调试。

新的错误报告思路是:在更完善的错误处理框架下,将错误收集并回传给用户态。基金会将对现有错误进行封装,并提供更丰富的上下文,帮助开发者定位问题。

至于 hooks,则会通过特殊的 polling wrapper 支持 async 代码,使部分阻塞操作(尤其是 file IO)能够被替换。此改动主要面向内部实现,如果性能允许,团队也会评估是否把部分 hooks 暴露给用户态。

网络与套接字改进

这一部分集中在引入全新的 polling API、改进 stream_select,并解决套接字相关的问题。

现代网络应用高度依赖可扩展的事件处理能力。新的 polling API 将引入 epoll、kqueue 等现代机制,帮助 PHP 更高效地管理多路 I/O Streams。

目前用户态只有 select 可用,而它在性能和扩展性上的瓶颈早已显现。这次现代化将直接惠及实现 async networking 或事件驱动 I/O 的框架与扩展。

这一 API 的主要目标,是在核心内部建立一套可复用的接口,既能服务于 PHP 内部的各种任务,也能作为未来 async IO API 的基础(或者备用方案)。

团队还会扩展 stream_select 的用法,让它更好地支持 filtered streams 的 polling,并为能够提供额外数据的外部对象暴露 API,与新的 polling API 的能力保持一致。为此需要适度重构,部分逻辑也可能与新 API 共享。

此外,计划对套接字进行多项改进。团队计划新增 socket context options,提供更灵活的配置能力;修复若干套接字处理问题,并强化 file descriptor 相关的实用工具。

安全与 TLS 增强

另一项重要工作聚焦在处理加密 Streams 的 OpenSSL 扩展。

团队准备重构当前并不完善、限制较多的 async 处理逻辑。完成后,将能更清楚地告知用户态需要何种 polling 动作,例如该 stream 应该等待读操作还是写操作。

此外,改进计划也强化了 TLS 1.3 支持,允许选择特定的 cipher suites,并整合 TLS Sessions、PSK(Pre-Shared Key)以及 early data(0-RTT)。

为支撑这些改动,基金会团队正在开发新的 TLS 1.3 PHP 测试库,便于自定义协议流程,并测试 TLS 1.3 的诸多特性,包括异步行为。

影响:对 PHP 生态与异步框架的启示

这些举措将共同推动 PHP 的 I/O 层在未来十年持续服务于 Web 与 CLI 的发展需求。

相关工作已经在 2025 年启动,并将持续推进至 2026 年。PHP Foundation 会通过官方更新、PHP internals 讨论以及 RFC 持续公开阶段性成果。

对更广泛的 PHP 生态而言,这轮 Streams 现代化不仅改善了底层 I/O 能力,也为异步框架铺平了道路。像 workerman/ReactPHP 这样依赖持续连接与事件循环的常驻内存框架,将能借助新的 polling API 进一步降低上下文切换成本,并在高并发场景中获得更稳定的资源利用率。随着 Streams 层统一错误处理、权限控制与 TLS 能力,也期待更多基于这些 API 的扩展与框架出现,在 WebSocket、RPC、物联网等实时业务里释放新一轮性能潜力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 15:18:16

每次提出一个bug都让测试重现,描述得那么清楚,自己操作下不会吗?

一说到测试和开发的关系,你一定会想到一个词“冤家”。 开发的工作就是按照PM的设计将产品最终造出来,而测试则是在开发已完成的工作里纠错。so,测试的工作会让开发很不爽,人之常情,谁都不喜欢自己的劳动成果被别人挑…

作者头像 李华
网站建设 2026/7/23 2:14:30

终极指南:Artillery负载测试3分钟快速入门 [特殊字符]

终极指南:Artillery负载测试3分钟快速入门 🚀 【免费下载链接】artillery Load testing at cloud-scale, as easy as 1-2-3. Serverless & distributed out-of-the-box. Never fail to scale! 项目地址: https://gitcode.com/gh_mirrors/ar/artill…

作者头像 李华
网站建设 2026/7/22 16:13:56

硬件工程师成长终极指南:159页深度技术解析

硬件工程师成长终极指南:159页深度技术解析 【免费下载链接】华为硬件工程师手册全159页PDF介绍 这份华为硬件工程师手册是硬件领域学习的宝贵资源,涵盖159页的深度内容,从职责技能到设计流程,全面解析华为硬件工程师的工作精髓。…

作者头像 李华
网站建设 2026/7/23 13:02:44

wangEditor实现excel数据动态绑定更新

《一个码农的CMS奇幻漂流》 需求评审会:当客户说"很简单"的时候… 各位父老乡亲好啊!我是福建厦门一名"资深"前端码农(资深加班多)。刚接到个CMS官网需求,看完需求文档我直接表演了个闽南式震惊…

作者头像 李华
网站建设 2026/7/21 1:51:17

Data Formulator终极指南:零代码实现AI驱动数据可视化革命

还在为复杂的数据可视化代码而烦恼吗?面对海量数据却不知从何下手?Data Formulator的出现彻底改变了这一局面——通过直观的拖拽操作和AI智能辅助,任何人都能在几分钟内创建专业级数据可视化报告。 【免费下载链接】data-formulator &#x1…

作者头像 李华
网站建设 2026/7/24 14:43:00

LLM训练算力优化终极指南:多后端引擎完整教程

LLM训练算力优化终极指南:多后端引擎完整教程 【免费下载链接】verl verl: Volcano Engine Reinforcement Learning for LLMs 项目地址: https://gitcode.com/GitHub_Trending/ve/verl 你是否在为大规模语言模型训练时的算力瓶颈而苦恼?面对70B以…

作者头像 李华