swoole提供了类似JavaScript的setInterval/setTimeout异步高精度定时器,粒度为毫秒级。使用也非常简单。
1.swoole_timer_tick
相当于setInterval,是持续触发的
函数原型:int $timer_id swoole_timer_tick(int $after_time_ms, mixed $callback function, mixed $user_param)
参数:
- int $after_time_ms:指定触发的时间,单位为毫秒
- mixed $callback function:执行的函数,参数有$timer_id
- mixed $user_param:用户参数
返回值:int $timer_id,表示定时器ID
2.swoole_timer_after
相当于setTimeout,仅在约定的时间触发一次
函数原型:int $timer_id swoole_timer_after(int $after_time_ms, mixed $callback function, mixed $user_param)
参数:
- int $after_time_ms:指定触发的时间,单位为毫秒
- mixed $callback function:执行的函数
- mixed $user_param:用户参数
返回值:int $timer_id,表示定时器ID
Tips:可以使用swoole_timer_clear(int $timer_id)清除定时器,参数为定时器ID
3.代码
1
2
3
4
5
6
7
8
9
10
11
<?php
//定时器 循环执行
swoole_timer_tick(5000,function($timer_id){
echo "Tick 5s timer(ID:".$timer_id.") \n";
});
//定时器 单次执行
swoole_timer_after(3000,function($timer_id){
echo "After 3s timer(ID:".$timer_id.") \n";
});
1 | <?php |
4.演示
将脚本上传服务器后执行可看到如下结果