十六、Swoole 基础学习笔记 - Swoole 毫秒定时器
hi,我是温新,一名PHPer
文章基于 Swoole 5.0.1 版本编写。
学习目标:掌握定时器的使用
说明:本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!
说明定时器,我们并不陌生,JS 中的 setinterval
和 settimeout
。在实际开发中我们也是经常使用它。PHP 中的定时是秒级的,而 Swoole 提供了更为强大的毫秒级定时。
使用场景
在项目中,经常会遇到需要定时执行的脚本,如定时发送邮件、定时查看服务器状态、定时清理垃圾数据等。
Swoole 定时器性能
底层使用最小堆数据结构实现定时器,定时器的添加和删除,全部为内存操作,因此性能是非常高的。
Swoole 定时器案例
tick() - 设置一个间隔定时器
使用场景,监控系统资源。如检测系统内存使用率。
<?php
// 15-swoole-timer-tick.php
Swoole\Timer::tick(100, function () {
echo 'hello swoole' . PHP_EOL;
});
after() - 延迟执行
使用场景,如用户登录后,过 2 分再发送邮件。
<?php
// 15-swoole-timer-after.php
// 1 秒后执行
Swoole\Timer::tick(100, function () {
echo 'hello swoole' . PHP_EOL;
});
after,只会执行一次
clear() 清除定时器
<?php
// 15-swoole-timer-clear.php
$i = 0;
Swoole\TImer::tick(500, function ($timerId) use (&$i) {
$i++;
echo $i . ' Swoole ' . PHP_EOL;
if ($i > 20) {
Swoole\Timer::clear($timerId);
}
});
本篇文章到此结束,我是温新,下篇文章继续学习 Swoole。
请登录后再评论