🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 异步毫秒定时器 毫秒精度的定时器。底层基于`epoll_wait`和`setitimer`实现,数据结构使用`最小堆`,可支持添加大量定时器。 > 无法用于`Manager`管理进程中 性能 ---- 底层使用最小堆数据结构实现定时器,定时器的添加和删除,全部为内存操作,因此性能是非常高的。官方的基准测试脚本 <https://github.com/swoole/swoole-src/blob/master/benchmark/timer.php> 中,添加或删除`10万`个随机时间的定时器耗时为`0.08s`左右。 ```shell ~/workspace/swoole/benchmark$ php timer.php add 100000 timer :0.091133117675781s del 100000 timer :0.084658145904541s ``` 差异 ----- `swoole_timer`与`PHP`本身的`pcntl_alarm`是不同的。`pcntl_alarm`是基于时钟信号 + PHP tick函数实现,有5个缺陷: * 最大仅支持到秒,而`swoole_timer`可以到毫秒级别 * 不支持同时设定多个定时器程序 * `pcntl_alarm`依赖`declare(ticks = 1)`,性能很差 * 无法用于异步`IO`,只支持同步方式。