swoole 提供了类似 JavaScript 的 setInterval | setTimeout 异步高精度定时器 Timer,与 PHP
本身的 pcntl_alarm
相比,Timer
更精确(毫秒级别)、性能更高(异步)、可同时设定多个定时器程序,本文以 WebSocket 服务器为为例,在监听到新连接时,添加个定时器 demo。
文档介绍:https://wiki.swoole.com/wiki/page/p-timer.html。
开始使用
1. Timer::tick - tick
定时器会每隔指定秒数持续触发,直到调用Timer::clear
清除。
<?php
$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);
// 监听连接
$server->on('open', function ($server, $request) {
echo date("Y-m-d H:i:s") . " start!!\n";
$count = 0;
Swoole\Timer::tick(5000, function ($timer_id) use (&$count) {
$count++;
echo date("Y-m-d H:i:s") .