博客 / 詳情

返回

OpenSwoole 26.2.0 發佈:支持 PHP 8.5、io_uring 後端及協程調試改進

OpenSwoole 26.2.0 發佈:支持 PHP 8.5、io_uring 後端及協程調試改進

OpenSwoole 26.2.0 是一次重大版本更新,帶來了 PHP 8.5 支持、原生 PHP Fiber 協程上下文、io_uring 事件驅動後端、協程內 Xdebug 斷點調試、事件循環延遲指標等功能。

升級方式

通過 PECL 安裝:

pecl install openswoole-26.2.0

或使用 Docker 鏡像:

docker pull openswoole/openswoole:26.2-php8.5-alpine

新特性

PHP 8.5 支持

OpenSwoole 26.2.0 完全兼容 PHP 8.5,支持管道操作符、URI 擴展、Clone With 等新特性。

PHP 原生 Fiber 協程上下文

新增基於 PHP 原生 zend_fiber API 的協程上下文後端,替代 Boost ASM 或 ucontext。該實現支持與 Xdebug、性能分析器及 Fiber 感知擴展的正確集成。

運行時啓用:

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

或通過 INI 配置:openswoole.use_fiber_context=On

協程內 Xdebug 斷點調試

啓用 Fiber 上下文後,Xdebug 斷點調試可在協程內正常工作。此前版本中"極其危險"的警告提示已被移除。

運行時選擇事件驅動後端

支持在運行時選擇事件驅動後端。

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+ 支持 multishot poll,舊內核自動回退。

io_uring 異步文件 I/O 引擎

專用 io_uring 環形緩衝區處理異步文件操作(open、read、write、fstat、fsync、unlink、rename、mkdir、rmdir),替代線程池方案。不支持的操作用優雅回退至線程池。

事件循環延遲指標

通過 $server->stats() 實現實時事件循環延遲監控。按工作進程、任務進程(啓用協程時)及 Reactor 線程(進程模式)暴露 event_loop_lag_msevent_loop_lag_max_msevent_loop_lag_avg_ms 指標。適用於檢測阻塞操作導致的事件循環停滯。

協程安全的 exit() 支持

PHP 8.4+ 上,協程內的 exit() 調用會被攔截並拋出 openswoole_exit_exception,防止整個進程終止。

HTTP 解析器遷移至 llhttp

將自定義 openswoole_http_parser 替換為 llhttp 解析器,提升標準兼容性與性能。

Bug 修復

  • 修復反射問題與作用域泄漏(#284):OSW_FUNCTION_ALIAS 導致全局函數在反射中顯示為類方法且返回類型損壞,已替換為正確的 PHP_FE/PHP_FALIAS 條目
  • 修復 io_uring 下文件 I/O 掛起:排空與重新武裝 single-shot POLL_ADD 之間可能丟失 eventfd 通知的競態條件
  • 修復文件鎖 Bug:非阻塞 flockLOCK_NB)現會在系統調用前正確檢查進程內協程鎖狀態
  • 修復 CPU 親和性編譯檢查:在 sched.h 前添加缺失的 _GNU_SOURCE 定義
  • 修復 futex 編譯檢查:在 linux/futex.h 前添加缺失的 _GNU_SOURCE 定義

破壞性變更

  • 移除 PHP 8.2 支持(最低要求 PHP 8.3)
  • 移除 PHP < 8.0 兼容代碼
  • 命名空間規範化:openswoole_*

升級

如需安裝 OpenSwoole 或查看其他更新方式,請參考 安裝文檔 與 更新指南。

安裝核心庫:

composer require openswoole/core:26.2.0

OpenSwoole 26.2.0 發佈:支持 PHP 8.5、io_uring 後端及協程調試改進

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.