🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 定时器使用注意事项 1、全局的定时器推荐在```onWorkerStart```回调中设置,针对某个连接的定时器推荐在```onConnect```中设置。 2、添加的定时任务在当前进程执行(不会启动新的进程或者线程),如果任务很重(特别是涉及到网络IO的任务),可能会导致该进程阻塞,暂时无法处理其它业务。所以最好将耗时的任务放到单独的进程运行,例如建立一个/多个Worker进程运行 3、当前进程忙于其它业务时或者当一个任务没有在预期的时间运行完,这时又到了下一个运行周期,则会等待当前任务完成才会运行,这会导致定时器没有按照预期时间间隔运行。也就是说当前进程的业务都是串行执行的,如果是多进程则进程间的任务运行是并行的。 4、需要注意多进程设置了定时任务造可能成并发问题,例如下面的代码每秒会打印5次。 ```php $worker = new Worker(); // 5个进程 $worker->count = 5; $worker->onWorkerStart = function($worker) { // 5个进程,每个进程都有一个这样的定时器 Timer::add(1, function(){ echo "hi\r\n"; }); }; Worker::runAll(); ``` 如果只想要一个进程运行定时器,参考[Timer::add 示例2](315179) 5、可能会有1毫秒左右的误差。