Hyperf 3.1 中协程引擎模式由 config/autoload/server.php 的 'mode' 字段控制,Swoole 用 SWOOLE_BASE,Swow 用 SWOW_BASE;runtime.php 仅管理运行时行为(如 AOP、上下文传播),不涉及 mode 配置。

Hyperf 3.1 中,runtime.php 文件**不负责配置协程引擎的 mode**——这个配置不在 runtime.php,而是在 config/autoload/server.php 的服务器设置里。
真正控制协程引擎模式的位置
Hyperf 启动时使用的底层协程引擎(Swoole 或 Swow)由 server.php 中的 'mode' 字段决定:
-
Swoole 模式:需设为
SWOOLE_BASE(默认值,适用于 Swoole 5.x 协程版) -
Swow 模式:需设为
SWOW_BASE(仅当启用 Swow ≥1.5.0 时有效)
修改示例(config/autoload/server.php):
return [
'mode' => SWOW_BASE, // ← 关键改动点
'servers' => [...],
'settings' => [...],
];
```
前置条件必须满足
仅改 mode 不够,还需确保:
- PHP 版本 ≥ 8.1
- 已安装对应扩展:
swoole.so(Swoole 模式)或swow.so(Swow 模式) - 扩展启用且支持协程:
php --ri swoole或php --ri swow输出中含support coroutines: enabled - Swow 模式下,需删除旧版数据库连接池配置(如
databases.php中的pool顶层结构),改用 Swow 专用池格式
为什么 runtime.php 不涉及 mode 配置
runtime.php 主要用于定义运行时行为,比如:
- 是否启用 AOP(
'enable_async' => true) - 协程上下文传播策略(如
'context' => ['trace_id']) - 协程 Hook 行为(如
'hook_flags' => SWOOLE_HOOK_ALL,但此字段在 Swow 下无效)
它不干预底层事件循环的启动方式,因此不包含 mode 这类核心服务模型参数。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











