Swoole提供了毫秒精度的定时器,所有操作都是内存操作,无额外的IO开销。
下面让我们一起详细了解每个函数的作用:
1) 函数tick:设置一个间隔时钟定时器,这个定时器会持续触发
Swoole\Timer::tick(int $msec, callable $callback_function, ...$params): int
$mesc:指定时间,单位毫秒【如 1000 表示 1 秒,v4.2.10 以下版本最大不得超过 86400000】
$callback_function:时间到期后所执行的函数,必须是可以调用的,格式为:callbackFunction(int $timer_id, ...$params),可以使用匿名函数的 use 语法传递参数到回调函数中。
$params:给执行函数传递数据【此参数也为可选参数】
返回值:定时器的ID
示例:
Swoole\Timer::tick(3000, function (int $timer_id, $param1, $param2) {
echo "timer_id #$timer_id, after 3000ms.\n";
echo "param1 is $param1, param2 is $param2.\n";
Swoole\Timer::tick(14000, function ($timer_id) {
echo "timer_id #$timer_id, after 14000ms.\n";
});
}, "A", "B");
注意事项:
定时器的校正:定时器回调函数的执行时间不影响下一次定时器执行的时间。实例:在 0.002s 设置了 10ms 的 tick 定时器,第一次会在 0.012s 执行回调函数,如果回调函数执行了 5ms,下一次定时器仍然会在 0.022s 时触发,而不是

Swoole提供了毫秒精度的定时器,如tick用于设置持续触发的定时器,after用于一次性执行的定时任务。定时器回调函数执行时间不影响下次执行,长时间执行会导致时间校正。同时介绍了clear、clearAll、info、list、stat和set等管理定时器的方法。
最低0.47元/天 解锁文章
1337

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



