【Swoole入门】异步毫秒定时器

定时器

一般的定时器是怎么实现的呢?我总结如下:

  1. 使用Crontab工具,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本;
  2. ignore_user_abort()和set_time_limit()配合使用;
  3. pcntl_alarm;
  4. swoole异步毫秒定时器

swoole异步毫秒定时器

Timer定时器

swoole内置定时器,通过函数addtimer即可在server中添加一个定时器,参数单位为毫秒,该定时器会在建立之后,按照预先设定好的时间间隔,每到对应的时间就会调用一次回调函数onTimer。看代码:
图片
执行过程:
图片

swoole_timer_add定时器

swoole_timer_add($interval,$callback)

$interval:时间间隔,单位毫秒,不能同时存在同样时间间隔的两个定时器(据官方文档,即将废弃)

注意点

  1. swoole_server中不能使用。
  2. 定时器必须在全异步模式下使用,同步阻塞代码下不可使用,比如sleep,file_get_contents,这些会阻塞timer,使之不能在预定时间间隔下执行。



图片
 

Tick定时器

swoole_timer_tick函数

设置一个间隔时钟定时器,与after定时器不同的是tick定时器会持续触发,直到调用swoole_timer_clear清除。与swoole_timer_add不同的是tick定时器可以存在多个相同间隔时间的定时器。


 
图片
定时器的作用非常重要,在实际工作中常常通过定时器任务检测服务器状况,数据库备份,心跳检测,消息订阅等等。

猜你喜欢

转载自blog.csdn.net/qq_15021091/article/details/81141746