OpenSwoole 26.2.0 发布!支持 PHP 8.5

AI 概述
OpenSwoole 26.2.0 发布,这是一个支持 PHP 8.5 的主要版本。新功能包括 PHP 本机 Fiber 协程上下文、io_uring 反应器后端及异步文件 I/O 引擎、事件循环延迟指标等,还支持协程中 Xdebug 逐步调试及协程安全的 exit()。同时进行了 HTTP 解析器迁移等优化,修复了反射、文件 I/O 挂起等问题。该版本放弃 PHP 8.2 支持,最低要求 PHP 8.3,还进行了命名空间规范化。用户可通过 pecl 或 Docker 升级,安装核心库用 composer。
目录
文章目录隐藏
  1. 新功能
  2. 错误修复
  3. 破坏性变更
  4. 升级

OpenSwoole 26.2.0 发布!支持 PHP 8.5

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

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

pecl install openswoole-26.2.0

或使用 Docker 镜像:

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 上下文文档以获取示例。在运行时配置:

Co::set(['use_fiber_context' => true]);

或通过 INI:openswoole.use_fiber_context=On

在协程中进行 Xdebug 逐步调试

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

运行时反应器类型选择

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

Co::set(['reactor_type' => OPENSWOOLE_IO_URING]);

新常量:OPENSWOOLE_EPOLL、OPENSWOOLE_KQUEUE、OPENSWOOLE_POLL、OPENSWOOLE_SELECT、OPENSWOOLE_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。

安装核心库:

composer require openswoole/core:26.2.0

以上关于OpenSwoole 26.2.0 发布!支持 PHP 8.5的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

7

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » OpenSwoole 26.2.0 发布!支持 PHP 8.5

发表回复