函數(shù)名:Fiber::isRunning()
適用版本:PHP 8.1.0 及以上版本
用法:Fiber::isRunning() 函數(shù)用于檢查當(dāng)前的 Fiber 是否正在運(yùn)行。
示例:
$fiber = new Fiber(function() {
echo "Fiber started\n";
Fiber::suspend();
echo "Fiber resumed\n";
});
echo "Before starting fiber\n";
var_dump(Fiber::isRunning($fiber)); // 輸出: bool(false)
$fiber->start();
echo "After starting fiber\n";
var_dump(Fiber::isRunning($fiber)); // 輸出: bool(true)
$fiber->resume();
echo "After resuming fiber\n";
var_dump(Fiber::isRunning($fiber)); // 輸出: bool(false)
解釋:
- 首先,我們創(chuàng)建了一個(gè) Fiber 對(duì)象,該對(duì)象包含了一個(gè)匿名函數(shù)作為 Fiber 的執(zhí)行體。
- 在開始執(zhí)行 Fiber 之前,我們使用 Fiber::isRunning() 函數(shù)檢查當(dāng)前 Fiber 是否正在運(yùn)行。由于 Fiber 還沒有開始執(zhí)行,所以返回值為 false。
- 接著,我們調(diào)用 $fiber->start() 方法來(lái)啟動(dòng) Fiber 的執(zhí)行。此時(shí),F(xiàn)iber 開始運(yùn)行,并輸出 "Fiber started"。
- 再次使用 Fiber::isRunning() 函數(shù)檢查當(dāng)前 Fiber 是否正在運(yùn)行。由于 Fiber 正在執(zhí)行中,所以返回值為 true。
- 最后,我們調(diào)用 $fiber->resume() 方法來(lái)恢復(fù) Fiber 的執(zhí)行。Fiber 繼續(xù)執(zhí)行,并輸出 "Fiber resumed"。
- 再次使用 Fiber::isRunning() 函數(shù)檢查當(dāng)前 Fiber 是否正在運(yùn)行。由于 Fiber 已經(jīng)執(zhí)行完畢,所以返回值為 false。