Fiber 是 PHP 8.1 引入的一個新特性,它允許你在 PHP 代碼中實現協程(Coroutine)和并發編程
以下是一個簡單的示例,展示了如何在 PHP 中使用 Fiber 進行并發編程:
<?php
// 創建一個 Fiber 對象,該對象表示一個協程
$fiber = new Fiber(function (): void {
echo "Fiber started\n";
$value = Fiber::suspend('Hello from fiber'); // 掛起當前協程并返回給定值
echo "Fiber resumed with value: ", $value, "\n";
});
// 啟動協程
$fiber->start();
// 從協程中獲取值
$returnedValue = $fiber->getReturn();
echo "Fiber returned: ", $returnedValue, "\n";
// 恢復協程并傳遞一個值
$fiber->resume("Hello back to main");
// 等待協程完成
$fiber->join();
echo "Fiber finished\n";
這個示例中,我們首先創建了一個 Fiber 對象,該對象表示一個協程。然后,我們使用 start()
方法啟動協程。接下來,我們使用 getReturn()
方法從協程中獲取返回值。然后,我們使用 resume()
方法恢復協程并傳遞一個值。最后,我們使用 join()
方法等待協程完成。
需要注意的是,Fiber 只能在 PHP 8.1 及更高版本中使用。如果你的 PHP 版本低于 8.1,你需要升級 PHP 版本才能使用 Fiber。此外,Fiber 不支持在 Web 服務器環境中使用,因為它可能會導致未定義的行為。因此,建議在 CLI 環境中使用 Fiber 進行并發編程。