简介
Timer 毫秒精度的定时器,底层基于 epoll_wait 和 setitimer 实现,数据结构使用最小堆,可支持添加大量定时器,使用最小堆数据结构实现的定时器,类似 JavaScript 的 setInterval,Swoole 定时器的添加和删除,全部为内存操作,因此性能是非常高的。
Swoole 中的 Timer 与 PHP 本身的 pcntl_alarm 是不同的。pcntl_alarm 是基于 时钟信号 + tick 函数实现,一个是最大仅支持到秒,另一个是不支持同时设定多个定时器程序,性能相对来说会比较差。
间隔时钟定时器
我们可以通过 Timer::tick 来实现间隔时钟定时器,定时器会持续触发,每隔指定时间自动触发执行回调函数, 直到调用 Timer::clear 来清除指定的定时器。
$i = 0;
Swoole\Timer::tick(1000, function($id) use ($i) {
global $i;
echo "tick id:$id i:$i \n";
$i++;
});

每隔1秒时间触发一次回调函数, 回调函数会自动打印一行信息到控制台。
一次性定时器
需要执行一次定时器的时候可以使用 Timer::after , 此函数是一个一次性定时器,与间隔时钟定时器不同,执行完成

最低0.47元/天 解锁文章
3229

被折叠的 条评论
为什么被折叠?



