查询

Swoole\Timer::after()函数—用法及示例

「 在指定的时间后执行一个回调函数 」


函数名:Swoole\Timer::after()

适用版本:Swoole 4.3.0+

用法:Swoole\Timer::after()函数用于在指定的时间后执行一个回调函数。

语法:Swoole\Timer::after(int $ms, callable $callback, ...$params): int|false

参数:

  • $ms:延迟执行的时间,单位为毫秒。
  • $callback:延迟执行的回调函数,可以是匿名函数或者一个已存在的函数。
  • ...$params:可选参数,传递给回调函数的参数。

返回值:

  • 成功时,返回一个定时器ID,可以用于取消定时器。
  • 失败时,返回false。

示例:

<?php

// 定义一个回调函数
function myCallback($param1, $param2)
{
    echo "Callback executed with parameters: $param1, $param2" . PHP_EOL;
}

// 延迟1秒后执行回调函数
$timerId = Swoole\Timer::after(1000, 'myCallback', 'Hello', 'World');

// 延迟2秒后取消定时器
Swoole\Timer::after(2000, function () use ($timerId) {
    Swoole\Timer::clear($timerId);
    echo "Timer $timerId cancelled" . PHP_EOL;
});

// 主动触发事件循环,使定时器生效
Swoole\Event::wait();

运行上述示例代码,1秒后会输出:Callback executed with parameters: Hello, World。2秒后会输出:Timer 1 cancelled

在这个示例中,我们使用Swoole\Timer::after()函数创建了一个定时器,延迟1秒后执行了myCallback()回调函数,并传递了两个参数。同时,我们也创建了一个延迟2秒后取消定时器的回调函数。最后,通过Swoole\Event::wait()主动触发事件循环,使定时器生效。

注意事项:

  • Swoole\Timer::after()函数必须在Swoole的事件循环中调用,否则定时器将不会生效。
  • 可以使用Swoole\Timer::clear()函数取消定时器,传入定时器ID作为参数。
补充纠错
上一个函数: Swoole\Timer::clear()函数
热门PHP函数
分享链接