在 onWorkerStart 里面定义了 个全局的 global $_downTimer;
然后在 Timer 里面倒计时 代码如下
global $_downTimer;
$_downTimer = 60;
$_timer = Timer::add(1, function () use (&$_timer,&$_downTimer) {
if($_downTimer == 0){
Timer::del($_timer);
}else{
Gateway::sendToGroup(, json_encode());
--$_downTimer;
}
});
运行 :php artisan wk start
然后进入房间后 timer 发送到客户端 是正常的 按每秒去递减,
之后我退出房间 在进去 ,那么问题来了:
Workerman 推送到客户端的 时间 会每秒打印 60,59,58 一次性可以推送3秒 或者更多过来 ,导致倒计时很快就走完了。
因为开了多个进程啊,比如你开了3个进程,3个进程都定时向客户端发,那就一次推3个过来了
不是进程问题,我只开了4个进程,我只在0号运行了 ,如果是进程问题,我第一次进来的时候为什么倒计时没问题,退出一次在进去 就会每秒推8,7,5,4 秒过来,然后再退出再进房间,就会一秒推8,7,6,5,4,3,2,1 感觉是乘以2
你应该是在onConnect或者其它地方里面也加了定时器吧,你要把代码都贴出才好定位,一般都是自己业务代码问题