函數(shù)名稱:EvLoop::periodic()
適用版本:Ev 1.0.0 或更高版本
用法:EvLoop::periodic() 方法用于在指定的時間間隔內(nèi)重復(fù)調(diào)用給定的回調(diào)函數(shù)。
語法:
public EvPeriodic EvLoop::periodic(float $offset, float $interval, callable $callback [, mixed $data = null [, int $priority = 0]])
參數(shù):
$offset
:延遲調(diào)用回調(diào)函數(shù)的時間(以秒為單位)??梢允歉↑c數(shù)。$interval
:回調(diào)函數(shù)之間的間隔時間(以秒為單位)??梢允歉↑c數(shù)。$callback
:回調(diào)函數(shù),每當(dāng)間隔到達時會被調(diào)用。回調(diào)函數(shù)應(yīng)該接受一個參數(shù)$watcher
,它是當(dāng)前正在執(zhí)行的周期觀察者(EvPeriodic
對象)。$data
(可選):傳遞給回調(diào)函數(shù)的額外數(shù)據(jù)。如果指定了該參數(shù),它將作為回調(diào)函數(shù)的第二個參數(shù)。$priority
(可選):指定回調(diào)函數(shù)的優(yōu)先級。較高的數(shù)值表示較高的優(yōu)先級,可以是正或負(fù)整數(shù)。
返回值:返回一個 EvPeriodic
對象(周期觀察者),可以用于對觀察者進行操作和管理。
示例:
$loop = new EvLoop();
$counter = 0;
$periodic = $loop->periodic(1, 2, function ($watcher) use(&$counter) {
echo 'Iteration: ' . $counter . PHP_EOL;
$counter++;
if ($counter >= 5) {
$watcher->stop(); // 停止周期調(diào)用
echo 'Periodic watcher stopped.' . PHP_EOL;
}
});
$loop->run();
以上示例中,我們創(chuàng)建了一個 EvLoop
對象,并在每隔2秒調(diào)用一次回調(diào)函數(shù)?;卣{(diào)函數(shù)的作用是打印當(dāng)前的迭代次數(shù)。在這個例子中,我們設(shè)置 $offset
為 1 表示延遲1秒后第一次調(diào)用回調(diào)函數(shù)。當(dāng)?shù)螖?shù)到達5次時,我們使用 stop()
方法停止了周期調(diào)用,并輸出了一條信息表示周期觀察者已經(jīng)停止。
注意:在實際使用時,你可能需要根據(jù)具體需求調(diào)整時間間隔和回調(diào)函數(shù)的邏輯。