需求:房间开启后10s内人数达到8人游戏开始,或者房间开启后10s房间人数大于等于2小于8游戏开始,开始后出现摇色子按钮,3秒后不管用户是否点击出现色子旋转动画,3秒后出现各自结果。 问题:轮询与延时该怎么做,这个场景用workerman好一点还是gateworker好一点
延迟用定时器
@xiaoxin 可以参考一下思路:
1、准备数据 //旋转动画 $anixArr = ['room_id' => time()] // 房间id=》当前时间戳 // 分数 $result = ['room_id' => array("a" => 0, "b" => 0, "time" => time())] // 房间id =》 各自分数
2、房间开启后10s检测 开一个10s的定时器,只开一次。判断可以开始后, $anixArr = ['room_id' => time()] // 写入时间戳
3、1s的动画检测 开一个1s的定时器,循环处理$anixArr foreach($anixArr as $sk => $v) { if (time() - $sv >= 3) { // 执行 // $result赋值 } }
4、1s的结果检测 跟上面类似
延迟用定时器
@xiaoxin
可以参考一下思路:
1、准备数据
//旋转动画
$anixArr = ['room_id' => time()] // 房间id=》当前时间戳
// 分数
$result = ['room_id' => array("a" => 0, "b" => 0, "time" => time())] // 房间id =》 各自分数
2、房间开启后10s检测
开一个10s的定时器,只开一次。判断可以开始后,
$anixArr = ['room_id' => time()] // 写入时间戳
3、1s的动画检测
开一个1s的定时器,循环处理$anixArr
foreach($anixArr as $sk => $v) {
if (time() - $sv >= 3) {
// 执行
// $result赋值
}
}
4、1s的结果检测
跟上面类似