English | 简体中文 | 繁體中文
查询

EvLoop::periodic()函数—用法及示例

「 在指定的时间间隔内重复调用给定的回调函数 」


函数名称:EvLoop::periodic()

适用版本:Ev 1.0.0 或更高版本

用法:EvLoop::periodic() 方法用于在指定的时间间隔内重复调用给定的回调函数。

语法:

public EvPeriodic EvLoop::periodic(float $offset, float $interval, callable $callback [, mixed $data = null [, int $priority = 0]])

参数:

  • $offset:延迟调用回调函数的时间(以秒为单位)。可以是浮点数。
  • $interval:回调函数之间的间隔时间(以秒为单位)。可以是浮点数。
  • $callback:回调函数,每当间隔到达时会被调用。回调函数应该接受一个参数 $watcher,它是当前正在执行的周期观察者(EvPeriodic对象)。
  • $data (可选):传递给回调函数的额外数据。如果指定了该参数,它将作为回调函数的第二个参数。
  • $priority (可选):指定回调函数的优先级。较高的数值表示较高的优先级,可以是正或负整数。

返回值:返回一个 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(); // 停止周期调用
        echo 'Periodic watcher stopped.' . PHP_EOL;
    }
});

$loop->run();

以上示例中,我们创建了一个 EvLoop 对象,并在每隔2秒调用一次回调函数。回调函数的作用是打印当前的迭代次数。在这个例子中,我们设置 $offset 为 1 表示延迟1秒后第一次调用回调函数。当迭代次数到达5次时,我们使用 stop() 方法停止了周期调用,并输出了一条信息表示周期观察者已经停止。

注意:在实际使用时,你可能需要根据具体需求调整时间间隔和回调函数的逻辑。

补充纠错
上一个函数: EvLoop::nowUpdate()函数
下一个函数: EvLoop::prepare()函数
热门PHP函数
分享链接