关于定时器

javascript

请问下WINDOS下单开一个Worker定时器进程,每秒钟循环查询数据库里面存在的房间,可能有几百个房间或上千个房间,达到一定人数开始游戏并进行逻辑处理(倒计时,开牌倒计时,下注,发牌,结算,显示数据,清理数据后下一局,如此循环下去),只有一个定时器这样会引起每个房间内的数据延迟或者游戏数据错乱吗?我的想法是每个房间一个定时器,或者一个房间一个进程,只处理这个房间内的一切,但是有太多房间,这想法好像不切实际,麻烦指导一二,感激不尽。

2255 4 0
4个回答

walkor

用一个进程处理所有房间的倒计时、开牌倒计时等所有逻辑可能会产生数据延迟,业务逻辑处理得当不会发生数据错乱。

推荐用多个进程执行定时器,每个进程处理多个房间

  • 暂无评论
javascript

@walkor 谢谢。
在请问下使用GatewayClient推送房间数据。
现在新建了2个文件

timer.php

$work= new Worker();
$work->onWorkerStart = function($worker){
//处理倒计时
Gateway::$registerAddress = '192.168.1.100:1236';
}

games.php

$work2= new Worker();
$work2->onWorkerStart = function($worker){
//处理房间逻辑数据
Gateway::$registerAddress = '192.168.1.100:1236';
}

运行的时候打印$worker->id都是0,这样算是new了2个进程吗?还是都是在BusinessWorker进程中的,这样做有没有什么意义

  • 暂无评论
walkor

对,这样是在两个进程中。
都在BusinessWorker进程中也可以

  • 暂无评论
latin

赞,学习了

  • 暂无评论
年代过于久远,无法发表回答
🔝