首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenSwoole 26.2.0 发布!支持 PHP 8.5

OpenSwoole 26.2.0 发布!支持 PHP 8.5

作者头像
Tinywan
发布2026-07-01 14:54:02
发布2026-07-01 14:54:02
1060
举报
文章被收录于专栏:开源技术小栈开源技术小栈

概述

OpenSwoole 26.2.0 是一个主要版本,支持 PHP 8.5、本机 PHP Fiber 协程上下文、io_uring 反应器后端、在协程中进行 Xdebug 逐步调试、事件循环延迟指标等。

您现在可以升级到 OpenSwoole v26.2.0:

代码语言:javascript
复制
pecl install openswoole-26.2.0

或使用 Docker 镜像:

代码语言:javascript
复制
docker pull openswoole/openswoole:26.2-php8.5-alpine

在 Docker Hub 上查找更多 OpenSwoole Docker 镜像。

新功能

PHP 8.5 支持

OpenSwoole 26.2.0 完全兼容 PHP 8.5,包括管道运算符、URI 扩展、Clone With 等新功能。

PHP 本机 Fiber 协程上下文

新的协程上下文后端使用 PHP 的本机 zend_fiber API,而不是 Boost ASM 或 ucontext。这使得与 Xdebug、性能分析器和支持 Fiber 的扩展正确集成。请参阅 Fiber 上下文文档以获取示例。在运行时配置:

代码语言:javascript
复制
Co::set(['use_fiber_context' => true]);

或通过 INI:openswoole.use_fiber_context=On

在协程中进行 Xdebug 逐步调试

启用 Fiber 上下文时,Xdebug 逐步调试现在可以在协程中正确工作。已移除旧的“极度危险”警告。

运行时反应器类型选择

在运行时选择事件反应器后端。请参阅反应器类型文档以获取详细信息和示例。

代码语言:javascript
复制
Co::set(['reactor_type' => OPENSWOOLE_IO_URING]);

新常量:OPENSWOOLE_EPOLLOPENSWOOLE_KQUEUEOPENSWOOLE_POLLOPENSWOOLE_SELECTOPENSWOOLE_IO_URING

io_uring 反应器后端

新的事件反应器使用 Linux io_uring 与 IORING_OP_POLL_ADD,作为 epoll 的直接替代品。使用 --enable-io-uring 启用(需要 liburing)。在内核 5.13+ 上支持多射击轮询,并在较旧内核上自动回退。请参阅 io_uring 文档以获取设置和示例。

io_uring 异步文件 I/O 引擎

专用的 io_uring 环用于异步文件操作(打开、读取、写入、fstat、fsync、unlink、重命名、mkdir、rmdir),取代线程池。不支持的操作会优雅地回退到线程池。请参阅 io_uring 异步文件 I/O 文档以获取示例。

事件循环延迟指标

通过 $server->stats() 实时监控事件循环延迟。每个 worker、任务 worker(启用协程时)和反应器线程(进程模式)暴露 event_loop_lag_msevent_loop_lag_max_msevent_loop_lag_avg_ms。用于检测阻塞操作导致事件循环停滞。请参阅事件循环延迟指标文档以获取监控和警报示例。

协程安全的 exit() 支持

在 PHP 8.4+ 上,协程中的 exit() 调用会被拦截并抛出 openswoole_exit_exception,而不是终止整个进程。请参阅协程安全的 exit() 文档以获取示例。

HTTP 解析器迁移到 llhttp

用 llhttp 解析器替换自定义的 openswoole_http_parser,以提高标准合规性和性能。

错误修复

  • 修复反射问题和作用域泄漏 (#284):OSW_FUNCTION_ALIAS 导致全局函数显示为类方法,并破坏反射中的返回类型。替换为正确的 PHP_FE / PHP_FALIAS 条目
  • 修复 io_uring 下文件 I/O 挂起:竞争条件,其中 eventfd 通知可能在排水和重新武装单射击 POLL_ADD 之间丢失
  • 修复文件锁错误:非阻塞 flock (LOCK_NB) 现在在系统 flock() 调用之前正确检查进程内协程锁状态
  • 修复 CPU 亲和性编译检查:在 sched.h 之前添加缺失的 _GNU_SOURCE 定义
  • 修复 futex 编译检查:在 linux/futex.h 之前添加缺失的 _GNU_SOURCE 定义

破坏性变更

  • 放弃 PHP 8.2 支持(最低要求 PHP 8.3)
  • 移除 PHP < 8.0 兼容代码
  • 命名空间规范化:openswoole_*

升级

如果您需要安装 OpenSwoole 或查看其他更新方法,请查看安装文档以及如何更新 Open Swoole。

安装核心库:

代码语言:javascript
复制
composer require openswoole/core:26.2.0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 新功能
    • PHP 8.5 支持
    • PHP 本机 Fiber 协程上下文
    • 在协程中进行 Xdebug 逐步调试
    • 运行时反应器类型选择
    • io_uring 反应器后端
    • io_uring 异步文件 I/O 引擎
    • 事件循环延迟指标
    • 协程安全的 exit() 支持
    • HTTP 解析器迁移到 llhttp
  • 错误修复
  • 破坏性变更
  • 升级
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档