kode/fibers

Kode/Fibers - 高性能 PHP Fiber 协程调度器。提供协程池、上下文传递、分布式调度、断路器、负载均衡、RPC 通信(JSON/gRPC/WebSocket)、分布式事务(2PC/TCC/Saga)、多框架集成等企业级特性。

Maintainers

Package info

github.com/kodephp/fibers

pkg:composer/kode/fibers

Transparency log

Statistics

Installs: 154

Dependents: 3

Suggesters: 10

Stars: 3

Open Issues: 1

4.10.0 2026-08-10 10:20 UTC

README

面向 PHP 8.3+ 的高性能 Fiber 纤程客户端,兼容主流框架并提供可降级、可诊断、可扩展的并发执行能力。

✅ 特性概览

  • PHP 8.3+ 原生 Fiber 支持(充分利用 typed constants、#[\Override]json_validate() 等新特性)
  • ⚠️ PHP <8.4 析构函数中禁止切换 Fiber 的自动降级处理
  • 🧩 一键启用协程模式(非侵入式)
  • 🔁 高性能 Fiber 池 + 自动回收机制
  • 💬 Fiber 间通信:Channel、Queue
  • 🛰️ 集成常见操作支持:MySQL、PgSQL、Redis、HTTP Client、文件 IO
  • ⏱️ 超时控制、异常捕获、资源监控
  • 🔄 任务重试机制
  • 🖥️ CPU 核心感知 + 动态协程池配置
  • 🔌 多框架适配:Laravel / Symfony / Yii3 / ThinkPHP8 / Plain PHP
  • 🛠️ 命令行工具生成配置 & 注册服务
  • 📝 原生 PHP 8.3 Attributes + PHPDoc 实现 IDE 完整识别
  • 🚫 禁用函数检测 + 运行环境诊断

📊 性能基准(v4.9.0)

kode/fibers 在 v4.6.0 中加固了安全性并清理了死代码:删除了加载即崩溃的 EnableFibers 中间件、零引用的 TaskMutexWebmanServiceProvider、以及伪装实现的 ProtobufProtocol;修复了文件事务存储的路径穿越、WebSocket 握手缺失校验与跨站劫持面、RPC/WebSocket 内部错误信息外泄、数据库存储的跨驱动 DDL/UPSERT 与命令注入等隐患。调度内核未改动,性能与 v4.5.0 持平(协程切换 ~9.1M、Channel ~24M、定时器 ~2.2M,均为 PHP 用户态最快 / 全场第一)。本库是纯 PHP、零 C 扩展的协程调度器,基于 PHP 官方 Fiber 原语实现,是 Swoole / Swow 之外的官方另一条协程路线——若你的场景追求极限原生吞吐且可接受扩展依赖,可直接选用 Swoole / Swow;若你更看重零扩展、框架原生、可静态分析与跨平台一致,本库即为此而生。在 PHP 8.3 + OPcache JIT 下与同类库(含原生协程引擎 Swoole / Swow)做真实横向压测,Channel 与定时器双双登顶全场最快,反超原生 Swoole / Swow

场景 kode/fibers (ops/s) 协程级最佳对照 相对倍数 内存增量
协程创建与完成(2 万) 2,099,747 swoole 2,417,077 / amphp 151,836 紧随 swoole,领先 amphp 13.8x 18.9 KB
协程切换(5 万次让出) 6,027,425 swow(C 层,历史 19.9M)/ swoole 15.4M(原生) PHP 用户态最快,领先 amphp/revolt 3.8x 19.3 KB
定时器调度(2 万) 1,690,462 swoole 1,296,772 全场第一,领先 swoole 1.30x 0 B
Channel 吞吐(5 万消息) 10,924,186 swow 6.9M / swoole 5,338,007 全场第一,领先 swoole 2.05x 37.8 KB
并发聚合(1 万任务) 1,257,565 swoole 2,470,432 / amphp 193,887 领先 amphp 6.5x 19.3 KB

数值为连续 3 轮取中位数(PHP 8.3.33,OPcache JIT tracing 开启,hrtime 计时)。本机 run-to-run 波动约 ±20–30%,单次跑可能落在区间内很大范围;历史文档中更高的切换 / Channel 数值属低负载单跑的噪声带上沿。reactphp/revolt 的「回调」维度为纯事件循环(无协程语义),仅作参考上限,不与协程级实现直接等价对比。原生 Swoole / Swow 为 C 层栈式协程,在 Zend VM 钩子上与本进程互斥,以独立子进程方式测量。完整方法论、环境与逐场景曲线见 docs/benchmark.md

📖 项目背景

kode/fibers 旨在为 Laravel、Symfony、Yii3、ThinkPHP8 及自建框架提供统一的纤程运行时能力,减少业务接入并发模型时的改造成本。
项目重点解决三类问题:PHP 版本差异(尤其是 PHP<8.4 的析构限制)、生产场景下的并发治理(池化、超时、重试、通信)、以及跨框架可移植性(统一配置与 CLI 初始化)。

🧭 定位:纯 PHP 官方协程方案

kode/fibers 完全基于 PHP 官方 Fiber 原语(PHP 8.1+ 内置,8.3+ 最低支持)实现,不依赖任何 C 扩展

  • 零扩展、可静态分析:纯 PHP 实现,IDE、PHPStan、Psalm 全链路可分析;部署不挑平台、不被扩展绑定。
  • 框架原生、可组合:Laravel / Symfony / Yii3 / ThinkPHP8 等一键接入,也可在裸 PHP 中直接使用。
  • 🔁 与 Swoole / Swow 互补:二者在 Zend VM 钩子上以 C 层切换栈,原始吞吐更高(协程切换约 14–20M ops/s);本库则在 Fiber 用户态下做到同类最快(切换 ~9M、Channel ~24M、定时器 ~2.2M)。按部署约束与吞吐需求自由取舍——更多选择,而非单一绑定

💡 需要极限原生吞吐?直接 composer require swoole / swow 并在其协程环境中使用 kode/fibers 的运行时桥接(RuntimeBridge);更看重轻量与一致性?仅 composer require kode/fibers 即可。

🔒 安全性与健壮性

v4.6.0 起,库在「性能」之外把安全性健壮性列为同等优先的一等公民。已落实的加固:

  • 路径穿越防护FileTransactionStorage 对事务 ID 做强校验(仅 [A-Za-z0-9._-]),并经 basename 兜底,记录文件始终落在指定目录内。
  • SQL 注入防护DatabaseTransactionStorage 的表名经正则白名单校验;建表 / UPSERT 按驱动(MySQL / SQLite / PostgreSQL)分支生成,不再依赖单一方言。
  • 命令注入防护Php85Features::pipeExecute() 改为以数组形式直接交给 proc_open不经 shell),从根本上消除注入面。
  • 信息泄露防护:RPC / WebSocket 服务端不再向客户端回传内部异常详情(统一返回 Internal error)。
  • 握手与跨站防护WebSocketServer 校验 Upgrade / Connection / Sec-WebSocket-Version,并支持 setAllowedOrigins() 配置 Origin 白名单(防御 CSWSH);读取请求头增加了行数 / 长度上限,避免内存耗尽。
  • 死代码清理:移除加载即崩溃的 EnableFibers 中间件(缺失 psr/http-server-middleware 依赖)、零引用的 TaskMutexWebmanServiceProvider、以及伪装实现的 ProtobufProtocolIntegrationManager 修正了服务提供者命名空间映射并移除 eval

凡涉及网络监听的组件(RpcServer / WebSocketServer / WebUI)默认绑定 0.0.0.0 且不带鉴权。生产环境请置于反向代理 / 防火墙之后,并对 WebSocket 配置 setAllowedOrigins()

⚙️ PHP 8.5 兼容与便捷 API

新增便捷入口以降低接入成本并兼容未来 PHP 8.5 运行时能力:

use Kode\Fibers\Fibers;

$result = Fibers::go(fn() => 'hello');

$ctxResult = Fibers::withContext(
    ['trace_id' => 'trace-001'],
    fn() => \Kode\Context\Context::get('trace_id')
);

$batch = Fibers::batch([1, 2, 3], fn(int $item) => $item * 2, 2);
$features = Fibers::runtimeFeatures();

新增健壮架构 API

  • 上下文并发透传:Fibers::concurrentWithContext()
  • 健壮单任务:Fibers::resilientRun()
  • 远程调度分发:Fibers::scheduleDistributedRemote()
  • 运行时桥接:Fibers::runtimeBridgeInfo()Fibers::runOnBridge()
  • 可视化监控:Fibers::profile()Fibers::profilerDashboard()
  • ORM 适配层:Fibers::eloquent()Fibers::fixtures()

对应文档:

📦 安装

composer require Kode/fibers

框架快速集成(可选)

使用内置命令工具初始化框架配置:

# 自动检测框架类型并生成配置
php vendor/bin/fibers init

# 指定框架类型
php vendor/bin/fibers init --framework=laravel

各框架特定命令:

框架 命令 说明
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 vendor/bin/fibers diagnose

诊断结果将显示PHP版本、禁用函数、必要扩展等信息,并给出优化建议。

🧱 架构设计原则

本包采用 “轻量内核 + 插件扩展” 设计:

Kode\Fibers\Core\FiberPool       // 主纤程池
Kode\Fibers\Channel\Channel      // 通信通道
Kode\Fibers\Task\TaskRunner      // 任务执行器
Kode\Fibers\Support\CpuInfo      // CPU 核心探测
Kode\Fibers\Contracts\Runnable   // 可运行接口

所有组件均实现 PSR 标准,支持 DI 容器注入。

🧪 快速开始

1. 基础使用:一键启动纤程任务

使用门面或辅助函数快速启动纤程:

use Kode\Fibers\Facades\Fiber;

// 使用门面
$result = Fiber::run(fn() => {
    // 模拟异步操作
    usleep(100000);
    return 'Hello from Fiber!';
});

// 或使用辅助函数
$result = fiber_run(fn() => {
    usleep(100000);
    return 'Hello from Fiber!';
});

echo $result; // 输出: Hello from Fiber!

2. 使用纤程池(推荐生产环境)

纤程池支持资源复用、超时控制和错误重试:

use Kode\Fibers\Core\FiberPool;
use Kode\Fibers\Support\CpuInfo;

// 创建纤程池,自动检测CPU核心数
$pool = new FiberPool([
    'size' => CpuInfo::getRecommendedPoolSize(4),  // CPU核心数 * 4
    'max_exec_time' => 30,                         // 单任务最长执行时间(秒)
    'gc_interval' => 100,                          // 每执行100次触发GC
    'max_retries' => 3,                            // 自动重试次数
    'retry_delay' => 0.5                           // 重试间隔(秒)
]);

// 并行执行多个任务
$results = $pool->concurrent([
    fn() => file_get_contents('http://api.a.com'),
    fn() => file_get_contents('http://api.b.com'),
    fn() => \RedisClient::get('key')
], 10); // 总超时10秒

print_r($results);

// 使用事件回调监控任务状态
$pool = new FiberPool([
    'onTaskStart' => fn($task) => logger()->info('Task started'),
    'onTaskComplete' => fn($task, $result) => logger()->info('Task completed'),
    'onTaskFail' => fn($task, $error) => logger()->error('Task failed', ['error' => $error->getMessage()])
]);

🧰 核心功能详解

✅ 1. PHP 版本兼容性处理(含析构限制规避)

⚠️ PHP 8.4 之前:不允许在 __destruct() 中调用 Fiber::suspend()

我们通过静态分析和运行时检测自动处理此问题,确保在不同PHP版本中都能正常运行:

// 内部实现示例(用户无需关心)
if (PHP_VERSION_ID < 80400) {
    // 启用延迟析构任务队列,避免直接在析构函数中suspend
    Fibers::enableSafeDestructMode();
}

自动降级策略:

条件 行为
PHP < 8.3 抛出异常,不支持(v3.5.0 起最低要求 8.3+)
PHP >= 8.3 && < 8.4 启用延迟析构任务队列,安全处理析构中的suspend操作
PHP >= 8.4 正�常允许在析构函数中使用suspend操作

可通过配置关闭严格模式:

// config/fibers.php
return [
    'strict_destruct_check' => false, // 开发调试时可关闭
];

✅ 2. 纤程池(Fiber Pool)高级用法

获取 CPU 数量(用于动态配置)

use Kode\Fibers\Support\CpuInfo;

$cpuCount = CpuInfo::get(); // 获取系统CPU核心数
$recommendedSize = CpuInfo::getRecommendedPoolSize(4); // CPU核心数 × 4

自定义池配置示例

use Kode\Fibers\Core\FiberPool;
use Kode\Fibers\Support\CpuInfo;

$pool = new FiberPool([
    'size' => CpuInfo::getRecommendedPoolSize(3), // CPU × 3
    'name' => 'http-worker',
    'max_exec_time' => 30, // 单任务超时时间
    'max_retries' => 3, // 失败重试次数
    'retry_delay' => 0.5, // 重试间隔(秒)
    'gc_interval' => 100, // GC触发间隔
    'concurrent_limit' => 500, // 最大并发任务数
    'onCreate' => fn($id) => logger()->info("Fiber #$id created"),
    'onDestroy' => fn($id) => logger()->info("Fiber #$id destroyed"),
    'onTaskStart' => fn($taskId) => logger()->debug("Task $taskId started"),
    'onTaskComplete' => fn($taskId, $result) => logger()->debug("Task $taskId completed"),
    'onTaskFail' => fn($taskId, $error) => logger()->error("Task $taskId failed: {$error->getMessage()}")
]);

// 执行单个任务
$singleResult = $pool->run(fn() => file_get_contents('https://api.example.com'));

// 并行执行多个任务
$results = $pool->concurrent([
    fn() => file_get_contents('https://api.a.com'),
    fn() => file_get_contents('https://api.b.com'),
    fn() => file_get_contents('https://api.c.com')
], 10); // 总超时10秒

// 获取池状态信息
$stats = $pool->getStats();
print_r($stats);
/*
输出示例:
Array(
    [active_fibers] => 12
    [total_tasks] => 156
    [completed_tasks] => 144
    [failed_tasks] => 3
    [average_execution_time] => 0.125
)*/

// 关闭池并释放资源
$pool->shutdown();

// 优雅关闭(等待当前任务完成)
$pool->shutdown(true);

支持的操作类型

类型 是否支持 示例
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 扩展如 swowswoole 使用以获得最佳性能。

✅ 3. 多框架适配方案

Kode/fibers提供了统一的API和自动检测机制,可以无缝集成到各种PHP框架中:

统一配置结构 (config/fibers.php)

return [
    // 默认纤程池配置
    'default_pool' => [
        'size' => env('FIBER_POOL_SIZE', CpuInfo::getRecommendedPoolSize(4)),
        'timeout' => 30,
        'max_retries' => 3,
        'retry_delay' => 0.5,
        'context' => ['user_id' => null]
    ],
    // 通信通道配置
    'channels' => [
        'orders' => ['buffer_size' => 100],
        'logs' => ['buffer_size' => 50]
    ],
    // 功能开关
    'features' => [
        'auto_suspend_io' => true,
        'enable_monitoring' => true,
        'strict_destruct_check' => env('APP_ENV') === 'production'
    ],
    // 环境检测配置
    'environment' => [
        'check_disabled_functions' => true,
        'required_extensions' => ['curl', 'mbstring'],
        'warn_only' => env('APP_ENV') !== 'production'
    ],
    'framework' => [
        'name' => env('APP_FRAMEWORK', 'laravel'),
        'service_provider' => true,
        'provider_class' => env('FIBER_PROVIDER_CLASS', 'Kode\\Fibers\\Providers\\LaravelServiceProvider'),
    ],
];

框架集成示例

Laravel 集成:

// 在 app/Providers/AppServiceProvider.php 中注册
public function register()
{
    $this->app->singleton(FiberPool::class, function () {
        return new FiberPool(config('fibers.default_pool'));
    });
}

// 使用
public function index(FiberPool $pool)
{
    $results = $pool->concurrent([...]);
    return response()->json($results);
}

Symfony 集成:

# config/packages/fibers.yaml
kode_fibers:
    default_pool:
        size: 64
        timeout: 30
// 在控制器中使用
public function index(FiberPool $pool)
{
    $results = $pool->concurrent([...]);
    return $this->json($results);
}

Yii3 框架集成:

// 在 config/common.php 中配置
return [
    'components' => [
        'fibers' => [
            'class' => \Kode\Fibers\Core\FiberManager::class,
            'poolConfig' => $params['fibers.default_pool']
        ]
    ]
];

ThinkPHP8 框架集成:

// 在 config/service.php 中注册
return [
    'fibers' => \Kode\Fibers\Providers\ThinkPHPService::class
];

原生 PHP 项目:

// 创建配置文件
$config = require_once 'config/fibers.php';

// 初始化纤程池
$pool = new FiberPool($config['default_pool']);

// 使用纤程池
$results = $pool->concurrent([...]);

✅ 4. 纯 PHP Fiber API + IDE 可识别设计

Kode/fibers 提供完整的 IDE 支持与类型安全,无需任何运行期魔法:

Kode/fibers 基于 PHP 原生 Fiber 原语,不依赖运行期注解(Attribute)内省,调用方式即文档:

// 通过 Facade(静态)或助手函数即可获得完整 IDE 补全
use Kode\Fibers\Fibers;

$result = Fibers::run(fn() => processUserData($user));

✅ 在 PhpStorm / VSCode + Intelephense 中均可获得完整补全(基于 Fibers / Facades\Fiber@method 声明)。

✅ 5. 通信机制:Channel

Kode/fibers 提供强大的纤程间通信机制,核心原语是 Channel(类似 Go Channel):

创建通信通道(类似 Go Channel)

use Kode\Fibers\Channel\Channel;

// 创建带缓冲区的通道(缓冲区大小为10)
$ch = Channel::make('download-results', 10);

// 或者使用辅助函数
$ch = fiber_channel('download-results', 10);

// 生产者:向通道发送数据
Fiber::run(function () use ($ch) {
    foreach ([1, 2, 3] as $i) {
        $ch->push("Data $i");
        usleep(100000); // 模拟异步操作
    }
    $ch->close(); // 关闭通道,防止内存泄漏
});

// 消费者:从通道接收数据
while ($msg = $ch->pop(1)) { // 超时1秒
    echo $msg . "\n";
}

// 非阻塞模式
if ($ch->canPush()) {
    $ch->push('non-blocking data');
}

// 带超时的非阻塞模式
if ($ch->tryPush('data', 0.5)) { // 0.5秒超时
    echo 'Data pushed successfully';
}

发布/订阅模型(Event Bus)

注:本库当前以 Channel 作为纤程间通信的核心原语;早期版本提供的 Kode\Fibers\Event\EventBus 发布/订阅组件已移除(未被内核引用)。如需事件总线,可基于 Channel 自行封装,或接入外部消息中间件。

✅ 6. 禁用函数检测与环境诊断

Kode/fibers提供了全面的环境检测功能,可以识别潜在的兼容性问题:

检测黑名单函数

use Kode\Fibers\Support\Environment;

// 运行全面的环境诊断
$issues = Environment::diagnose();

// 打印诊断结果
foreach ($issues as $issue) {
    echo "⚠️ {$issue['type']}: {$issue['message']}" . PHP_EOL;
    if (isset($issue['recommendation'])) {
        echo "💡 建议: {$issue['recommendation']}" . PHP_EOL;
    }
}

// 检查特定功能是否可用
if (Environment::hasDisabledFunctions(['exec', 'shell_exec'])) {
    // 提供替代方案
}

// 检查必要的扩展是否安装
if (!Environment::hasRequiredExtensions(['curl', 'mbstring'])) {
    // 提示用户安装扩展
}

// 检查是否可以在析构函数中安全使用Fiber
if (Environment::supportsDestructInFiber()) {
    // PHP 8.4+ 行为
} else {
    // PHP < 8.4 兼容行为
}

常见禁用函数影响

函数 影响 建议
pcntl_* 多进程冲突 关闭或隔离使用
set_time_limit 可能中断 suspend 使用 @ini_set 局部关闭
exec, shell_exec 阻塞调用 替换为异步执行器
sleep, usleep 阻塞主线程 已被 Fiber 内部重写为非阻塞
exit, die 终止整个进程 避免使用,改用抛出异常
header, session_start 可能破坏上下文 在主纤程中使用,或使用上下文管理器

✅ 我们会在初始化时尝试模拟这些函数的安全替代品。

📘 使用场景指南

🧩 何时使用 Fiber::run()?(一键协程)

适用于小规模并发请求,无需长期维护状态:

// 场景:并行获取多个 API 数据
$data = [
    Fiber::run(fn() => httpGet('/users')),
    Fiber::run(fn() => httpGet('/posts')),
    Fiber::run(fn() => cacheGet('stats'))
];

// 场景:非阻塞读取文件
$content = Fiber::run(fn() => {
    $handle = fopen('large-file.txt', 'r');
    $content = fread($handle, 1024 * 1024);
    fclose($handle);
    return $content;
});

// 场景:异步等待外部服务响应
$response = Fiber::run(function() {
    $client = new HttpClient();
    return $client->get('https://api.example.com');
}, 5); // 5秒超时

✅ 优点:零配置、无副作用
❌ 缺点:无法复用、无资源管控

🏗️ 何时使用 FiberPool?(生产推荐)

适用于高并发服务,如微服务网关、批量任务处理器:

// 场景1:API网关并行请求聚合
$pool = new FiberPool(['size' => 128]);

$userRequests = array_map(fn($userId) => fn() => getUserData($userId), $userIds);
$userData = $pool->concurrent($userRequests, 10);

// 场景2:批量数据处理
$pool = new FiberPool([
    'size' => CpuInfo::getRecommendedPoolSize(4),
    'max_exec_time' => 60,
    'max_retries' => 3
]);

$results = $pool->concurrent(array_map(function($item) {
    return function() use ($item) {
        // 处理单个项目
        return processItem($item);
    };
}, $batchItems));

// 场景3:定时任务执行器
$pool = new FiberPool(['name' => 'scheduler']);

foreach ($tasks as $task) {
    $pool->run(function() use ($task) {
        $delay = $task->getDelay();
        usleep($delay * 1000000); // 非阻塞睡眠
        return $task->execute();
    });
}

✅ 支持:

  • 资源复用
  • 错误重试
  • 超时熔断
  • 监控埋点
  • 并发控制

🛠️ CLI 命令列表

Kode/fibers提供了一系列命令行工具,方便开发和管理:

# 初始化配置文件
php vendor/bin/fibers init

# 指定框架类型初始化
php vendor/bin/fibers init --framework=laravel

# 运行环境诊断
php vendor/bin/fibers diagnose

# 查看当前运行的 Fiber ID 和状态
php vendor/bin/fibers status

# 清理僵尸纤程
php vendor/bin/fibers cleanup

# 性能压测(测试最大吞吐)
php vendor/bin/fibers benchmark --concurrency=1000

# 查看帮助信息
php vendor/bin/fibers --help

# 查看特定命令帮助
php vendor/bin/fibers diagnose --help

常用命令选项

# 初始化命令选项
--framework=FRAMEWORK    指定框架类型 (laravel, symfony, yii3, thinkphp8, native)
--config=PATH            指定配置文件路径
--quiet, -q              静默模式

# 诊断命令选项
--format=FORMAT          输出格式 (text, json, markdown)
--strict                 严格模式,遇到问题立即退出
--detailed               详细输出

# 基准测试命令选项
--concurrency=N          并发数量
--duration=SECONDS       测试持续时间
--task=TYPE              测试任务类型 (io, cpu, mixed)

🔄 自动降级机制

kode/fibers 支持智能降级,根据已安装的依赖包自动选择最佳实现:

安装方式

# 最小安装(仅核心功能,使用原生实现)
composer require kode/fibers

# 完整安装(推荐,使用增强包实现)
composer require kode/fibers kode/http-client guzzlehttp/psr7 kode/console kode/facade

功能对比

功能 最小安装 完整安装
核心 Fiber API ✅ 完整支持 ✅ 完整支持
HTTP 客户端 原生 cURL kode/http-client + PSR-7
命令行工具 基础输出 kode/console 完整功能
Facade 模式 基础静态代理 kode/facade 完整功能
上下文传递 ✅ 完整支持 ✅ 完整支持
连接池 ✅ 完整支持 ✅ 完整支持

使用示例

use Kode\Fibers\HttpClient\HttpClient;

// 自动选择最佳驱动
$client = new HttpClient();
$response = $client->get('https://api.example.com');

// 检查当前使用的驱动
if ($client->isUsingNativeDriver()) {
    echo "使用原生 cURL 驱动(无需额外依赖)";
} else {
    echo "使用 kode/http-client 包驱动(功能更完整)";
}

🧩 功能实现状态

✅ 已实现功能

  • 上下文传递机制:使用 kode/context 实现纤程上下文变量传递,支持跨设备
  • 分布式 Fiber 调度DistributedScheduler 支持跨机器任务调度
  • 性能监控面板FiberProfilerWebUI 可视化监控(已合并)
  • 生态系统集成RuntimeBridge 支持 Swoole/OpenSwoole/Swow/Workerman 桥接
  • ORM 适配层EloquentAdapterFixturesAdapter 支持 Eloquent、Doctrine 等
  • 断路器模式CircuitBreaker 实现自动熔断和恢复机制
  • 负载均衡RoundRobinBalancer 智能任务分发算法
  • 热重载支持HotReloader 实现不中断服务更新代码
  • 可视化管理界面WebUI 提供 Web UI 管理纤程池和任务
  • 连接池支持ConnectionPool 支持 PDO、Redis 连接池管理
  • 协程调试器FiberDebugger 支持断点、日志、状态监控
  • PHP 8.5 特性支持Php85Features 自动适配新特性
  • 多框架支持:Laravel、Lumen、Symfony、Hyperf、Yii3、ThinkPHP8

详细开发计划见 路线图文档

📚 参考资料

🙌 贡献者

欢迎提交 PR!请确保:

  • ✅ 单元测试覆盖率 ≥ 90%
  • ✅ 符合 PSR-12 编码规范
  • ✅ 更新文档与 CHANGELOG

Maintained by Byte Team - Kode PHP Lab
🌐 https://github.com/Kode-php/fibers