PHP 纤维 Fiber
探索 PHP 8.1 的 Fiber 实现,理解协程并发执行机制。 · 难度:入门 · +15XP
什么是 Fiber?
Fiber 是 PHP 8.1 引入的轻量级协程,允许在单线程中实现非阻塞并发执行,适合 I/O 密集型任务。
基本概念
Fiber 可以暂停执行(suspend),让出控制权,随后从暂停点恢复(resume)。
代码示例
$fiber = new Fiber(function(): void {
echo "Fiber 开始
";
Fiber::suspend();
echo "Fiber 恢复
";
});
echo "主程序开始
";
$fiber->start();
echo "主程序继续
";
$fiber->resume();
echo "主程序结束
";
// 输出:主程序开始->Fiber开始->主程序继续->Fiber恢复->主程序结束
传递数据
$fiber = new Fiber(function(int $a, int $b): int {
$sum = $a + $b;
$multiplier = Fiber::suspend($sum);
return $sum * $multiplier;
});
$result = $fiber->start(3, 4);
echo $result; // 7
$result = $fiber->resume(2);
echo $result; // 14
| 方法 | 作用 |
|---|---|
| start() | 启动 Fiber |
| suspend() | 暂停当前 Fiber |
| resume() | 恢复 Fiber |
练习提示
创建一个 Fiber,模拟两个异步任务,在任务之间切换。