Download the PHP package kode/fibers without Composer
On this page you can find all versions of the php package kode/fibers. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package fibers
🚀 Kode/fibers – 高性能 Fiber 线程池与协程调度器
面向 PHP 8.1+ 的高性能 Fiber 纤程客户端,兼容主流框架并提供可降级、可诊断、可扩展的并发执行能力。
✅ 特性概览
- ✅ PHP 8.1+ 原生 Fiber 支持
- ⚠️ PHP <8.4 析构函数中禁止切换 Fiber 的自动降级处理
- 🧩 一键启用协程模式(非侵入式)
- 🔁 高性能 Fiber 池 + 自动回收机制
- 💬 Fiber 间通信:Channel、Queue、Event Bus
- 🛰️ 集成常见操作支持:MySQL、PgSQL、Redis、HTTP Client、文件 IO
- ⏱️ 超时控制、异常捕获、资源监控
- 🔄 任务重试机制
- 🖥️ CPU 核心感知 + 动态线程池配置
- 🔌 多框架适配:Laravel / Symfony / Yii3 / ThinkPHP8 / Plain PHP
- 🛠️ 命令行工具生成配置 & 注册服务
- 📝 原生 PHP 8.1 Attributes + PHPDoc 实现 IDE 完整识别
- 🚫 禁用函数检测 + 运行环境诊断
📖 项目背景
kode/fibers 旨在为 Laravel、Symfony、Yii3、ThinkPHP8 及自建框架提供统一的纤程运行时能力,减少业务接入并发模型时的改造成本。\
项目重点解决三类问题:PHP 版本差异(尤其是 PHP<8.4 的析构限制)、生产场景下的并发治理(池化、超时、重试、通信)、以及跨框架可移植性(统一配置与 CLI 初始化)。
⚙️ PHP 8.5 兼容与便捷 API
新增便捷入口以降低接入成本并兼容未来 PHP 8.5 运行时能力:
新增健壮架构 API
- 上下文并发透传:
Fibers::concurrentWithContext() - 健壮单任务:
Fibers::resilientRun() - 远程调度分发:
Fibers::scheduleDistributedRemote() - 运行时桥接:
Fibers::runtimeBridgeInfo()、Fibers::runOnBridge() - 可视化监控:
Fibers::profile()、Fibers::profilerDashboard() - ORM 适配层:
Fibers::eloquent()、Fibers::fixtures()
对应文档:
- 上下文传递机制
- 运行时桥接
- Profiler 可视化面板
- ORM 适配层
📦 安装
框架快速集成(可选)
使用内置命令工具初始化框架配置:
各框架特定命令:
| 框架 | 命令 | 说明 |
|---|---|---|
| Laravel | php artisan vendor:publish --tag=fibers-config |
生成 config/fibers.php |
| Symfony | bin/console fibers:install |
创建 config/packages/fibers.yaml |
| Yii3 | php yii fibers/setup |
初始化模块配置 |
| ThinkPHP8 | php think fibers:config |
生成 config/fibers.php |
| 其他/原生 | vendor/bin/fibers init |
交互式创建配置文件 |
环境要求检查
安装完成后,可以运行诊断命令检查环境兼容性:
诊断结果将显示PHP版本、禁用函数、必要扩展等信息,并给出优化建议。
🧱 架构设计原则
本包采用 “轻量内核 + 插件扩展” 设计:
所有组件均实现 PSR 标准,支持 DI 容器注入。
🧪 快速开始
1. 基础使用:一键启动纤程任务
使用门面或辅助函数快速启动纤程:
2. 使用纤程池(推荐生产环境)
纤程池支持资源复用、超时控制和错误重试:
🧰 核心功能详解
✅ 1. PHP 版本兼容性处理(含析构限制规避)
⚠️ PHP 8.4 之前:不允许在
__destruct()中调用Fiber::suspend()
我们通过静态分析和运行时检测自动处理此问题,确保在不同PHP版本中都能正常运行:
自动降级策略:
| 条件 | 行为 |
|---|---|
| PHP < 8.1 | 抛出异常,不支持 |
| PHP >= 8.1 && < 8.4 | 启用延迟析构任务队列,安全处理析构中的suspend操作 |
| PHP >= 8.4 | 正常允许在析构函数中使用suspend操作 |
可通过配置关闭严格模式:
✅ 2. 纤程池(Fiber Pool)高级用法
获取 CPU 数量(用于动态配置)
自定义池配置示例
支持的操作类型
| 类型 | 是否支持 | 示例 |
|---|---|---|
| MySQL | ✅ | PDO::query() in fiber |
| PgSQL | ✅ | \PDO 或 \pg_connect() |
| Redis | ✅ | \Redis, \Predis\Client |
| HTTP | ✅ | file_get_contents, curl_exec, Guzzle |
| 文件 IO | ✅ | fopen, fwrite(需异步驱动) |
| Queue | ✅ | Channel / MessageQueue |
| Sleep | ✅ | usleep() 被拦截为非阻塞 |
💡 提示:建议配合异步 I/O 扩展如
swow或swoole使用以获得最佳性能。
✅ 3. 多框架适配方案
Kode/fibers提供了统一的API和自动检测机制,可以无缝集成到各种PHP框架中:
统一配置结构 (config/fibers.php)
框架集成示例
Laravel 集成:
Symfony 集成:
Yii3 框架集成:
ThinkPHP8 框架集成:
原生 PHP 项目:
✅ 4. PHP 8.1 原生注解 + IDE 可识别设计
Kode/fibers充分利用PHP 8.1的原生注解功能,提供更好的IDE支持和类型安全:
使用 Attribute 实现元数据标记
PHPDoc 辅助 IDE 提示
✅ 在 PhpStorm / VSCode + Intelephense 中均可获得完整补全!
自动类型推断与验证
Kode/fibers通过PHP 8.1的类型系统和注解,可以在开发阶段捕获潜在问题:
✅ 5. 通信机制:Channel 与 Event Bus
Kode/fibers提供了强大的纤程间通信机制,包括Channel(类似Go Channel)和Event Bus(发布/订阅模式):
创建通信通道(类似 Go Channel)
发布/订阅模型(Event Bus)
✅ 6. 禁用函数检测与环境诊断
Kode/fibers提供了全面的环境检测功能,可以识别潜在的兼容性问题:
检测黑名单函数
常见禁用函数影响
| 函数 | 影响 | 建议 |
|---|---|---|
pcntl_* |
多进程冲突 | 关闭或隔离使用 |
set_time_limit |
可能中断 suspend | 使用 @ini_set 局部关闭 |
exec, shell_exec |
阻塞调用 | 替换为异步执行器 |
sleep, usleep |
阻塞主线程 | 已被 Fiber 内部重写为非阻塞 |
exit, die |
终止整个进程 | 避免使用,改用抛出异常 |
header, session_start |
可能破坏上下文 | 在主纤程中使用,或使用上下文管理器 |
✅ 我们会在初始化时尝试模拟这些函数的安全替代品。
📘 使用场景指南
🧩 何时使用 Fiber::run()?(一键协程)
适用于小规模并发请求,无需长期维护状态:
✅ 优点:零配置、无副作用\ ❌ 缺点:无法复用、无资源管控
🏗️ 何时使用 FiberPool?(生产推荐)
适用于高并发服务,如微服务网关、批量任务处理器:
✅ 支持:
- 资源复用
- 错误重试
- 超时熔断
- 监控埋点
- 并发控制
🛠️ CLI 命令列表
Kode/fibers提供了一系列命令行工具,方便开发和管理:
常用命令选项
🔄 自动降级机制
kode/fibers 支持智能降级,根据已安装的依赖包自动选择最佳实现:
安装方式
功能对比
| 功能 | 最小安装 | 完整安装 |
|---|---|---|
| 核心 Fiber API | ✅ 完整支持 | ✅ 完整支持 |
| HTTP 客户端 | 原生 cURL | kode/http-client + PSR-7 |
| 命令行工具 | 基础输出 | kode/console 完整功能 |
| Facade 模式 | 基础静态代理 | kode/facade 完整功能 |
| 上下文传递 | ✅ 完整支持 | ✅ 完整支持 |
| 连接池 | ✅ 完整支持 | ✅ 完整支持 |
使用示例
🧩 功能实现状态
✅ 已实现功能
- [x] 上下文传递机制:使用
kode/context实现纤程上下文变量传递,支持跨设备 - [x] 分布式 Fiber 调度:
DistributedScheduler支持跨机器任务调度 - [x] 性能监控面板:
FiberProfiler和WebUI可视化监控(已合并) - [x] 生态系统集成:
RuntimeBridge支持 Swoole/OpenSwoole/Swow/Workerman 桥接 - [x] ORM 适配层:
EloquentAdapter和FixturesAdapter支持 Eloquent、Doctrine 等 - [x] 断路器模式:
CircuitBreaker实现自动熔断和恢复机制 - [x] 负载均衡:
RoundRobinBalancer智能任务分发算法 - [x] 热重载支持:
HotReloader实现不中断服务更新代码 - [x] 可视化管理界面:
WebUI提供 Web UI 管理纤程池和任务 - [x] 连接池支持:
ConnectionPool支持 PDO、Redis 连接池管理 - [x] 协程调试器:
FiberDebugger支持断点、日志、状态监控 - [x] PHP 8.5 特性支持:
Php85Features自动适配新特性 - [x] 多框架支持:Laravel、Lumen、Symfony、Hyperf、Webman、Yii3、ThinkPHP8
详细开发计划见 路线图文档。
📚 参考资料
- PHP Fibers RFC - PHP 官方纤程规范
- PHP 8.1 Fibers 文档 - 官方 API 文档
- Swoole Coroutine Docs - Swoole 协程文档
- Swow Fiber Guide - Swow 框架纤程指南
- Go Channels in PHP - PHP 中的 Go 通道实现
- RevoltPHP Event Loop - 事件循环实现参考
🙌 贡献者
欢迎提交 PR!请确保:
- ✅ 单元测试覆盖率 ≥ 90%
- ✅ 符合 PSR-12 编码规范
- ✅ 更新文档与 CHANGELOG
Maintained by Byte Team - Kode PHP Lab\ 🌐 https://github.com/Kode-php/fibers
All versions of fibers with dependencies
guzzlehttp/psr7 Version ^2.8
kode/context Version ^2.1
kode/aop Version ^2.0
kode/attributes Version ^1.0
kode/facade Version ^2.0
kode/http-client Version ^2.1
kode/console Version ^2.1