多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Swoole提供强大的异步毫秒定时器,基于timerfd+epoll实现。主要方法: 1、swoole_timer_tick:周期性定时器,类似于JavaScript里的`setInterval() `。 2、swoole_timer_after:一次性定时器。 3、swoole_timer_clear:清除定时器。 ``` php # 周期性定时器 int swoole_timer_tick(int $ms, callable $callback, mixed $user_param); # 一次性定时器 swoole_timer_after(int $after_time_ms, mixed $callback_function, mixed $user_param); # 清除定时器 bool swoole_timer_clear(int $timer_id) # 定时器回调函数 function callbackFunction(int $timer_id, mixed $params = null); ``` 注意: - `$ms` 最大不得超过 86400000。 - manager进程中不能添加定时器。 - 建议在`WorkerStart`回调里写定时器。 定时器示例: ``` php $server->on('WorkerStart', function (\swoole_server $server, $worker_id){ if ($server->worker_id == 0){//防止重复 //每隔2000ms触发一次 swoole_timer_tick(2000, function ($timer_id) { echo "tick-2000ms\n"; }); //3000ms后执行此函数 swoole_timer_after(3000, function () { echo "after 3000ms.\n"; }); } }); ```