函数名: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作为参数。