登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
PHP 基金会宣布:Streams 现代化 将引入事件循环与异步 ...
PHP 基金会宣布:Streams 现代化 将引入事件循环与异步新能力
[ 复制链接 ]
艋佰傧
3 天前
PHP 基金会宣布:Streams 现代化 将引入事件循环与异步新能力
得益于德国政府支持的开源基础设施机构 Sovereign Tech Agency (STA) 的投资,PHP 基金会正在为 PHP 最古老且至关重要的子系统之一——Streams——推进现代化改造。本文整理了基金会公布的计划,并解释这些变革对 PHP 生态的重要性。
总结就是一句话,PHP Stream 要加入事件循环了。
原文链接 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、物联网等实时业务里释放新一轮性能潜力。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
PHP
基金会
宣布
Streams
现代化
相关帖子
多进程环境中解决 PHP 文件系统锁定问题指南
PHP转Go系列 | 如何将 PHP 项目快速迁移到 Go 上?
PHP "真异步" TrueAsync SAPI 与 NGINX Unit 集成
深入理解 PHP-FPM 的最佳配置
PHP 桌面端框架NativePHP for Desktop v2 发布!
PHP 程序员为什么总是瞧不起 PHP ?
PHP 8.5 新特性 闭包可以作为常量表达式了
PHP 异常处理全攻略 Try-Catch 从入门到精通完全指南
PHP 组件未来:Livewire 4 正式发布,性能更快,功能更完整
PHP 现代特性速查 写出更简洁安全的代码(第一篇)
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
多进程环境中解决 PHP 文件系统锁定问题指南
0
839
坟菊
2025-10-13
安全
PHP转Go系列 | 如何将 PHP 项目快速迁移到 Go 上?
0
928
嗦或
2025-10-13
业界
PHP "真异步" TrueAsync SAPI 与 NGINX Unit 集成
1
312
缍米
2025-10-15
业界
深入理解 PHP-FPM 的最佳配置
1
979
馑妣窟
2025-10-17
业界
PHP 桌面端框架NativePHP for Desktop v2 发布!
1
874
段一璇
2025-10-19
业界
PHP 程序员为什么总是瞧不起 PHP ?
1
532
告陕无
2025-10-20
业界
PHP 8.5 新特性 闭包可以作为常量表达式了
1
559
栓汨渎
2025-10-21
业界
PHP 异常处理全攻略 Try-Catch 从入门到精通完全指南
2
388
汝雨竹
2025-10-24
业界
PHP 组件未来:Livewire 4 正式发布,性能更快,功能更完整
0
259
背竽
2025-11-01
业界
PHP 现代特性速查 写出更简洁安全的代码(第一篇)
0
660
遑盲
2025-11-04
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
艋佰傧
3 天前
关注
0
粉丝关注
13
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
dage888
999994
3934307807
992122
4
xiangqian
641213
5
刎唇
9993
6
荡俊屯
9948
7
匝抽
9986
8
二艰糖
9970
9
宓碧莹
9988
10
富账慕
9938
查看更多