我目前正在开发一个带有 PHP 后端的浏览器游戏,该后端需要在未来的特定变化点执行某些检查。Cron 作业对我来说并没有真正削减它,因为我需要秒级的精度。以下是一些背景信息:
- 游戏是多人和回合制
- 在创建游戏室时,游戏创建者可以指定每个操作所花费的最长时间(30 秒 - 24 小时)
一旦玩家执行一个动作,他们应该只有指定的时间来执行下一个动作,否则轮到下一个玩家。
由于显而易见的原因,我不能只通过 Javascript 来跟踪时间,因为这太容易操作了。我也不能每分钟安排一次 cron 作业,因为它可能会迟到 30 秒。
解决这个问题的最有效方法是什么?我无法想象每秒查询一个数据库会对服务器非常友好,但这是我目前倾向于的方向[1]。
任何帮助或反馈将不胜感激!
[1]:
- 用户移动
- 调用一个 PHP 函数,将 MySQL 表的游戏行中的“switchTurnTime”设置为“TIMESTAMP”
- 始终在后台运行的 PHP 脚本会查询表中是否有任何“switchTurnTime”已过的游戏,切换回合并重置时间。