我正在努力制作游戏。现在这是我的问题: - 我创造了一个Miner对象,以25小时/小时的速度收获石头 - 我有一个UI,显示他有多少石头。 - 现在我需要一些工作来检查所有用户和他们当前的石头,每小时他们将获得的石头数量,并将其添加到他们当前的石头。
这应该在服务器启动时保持运行。有没有办法在Laravel中实现这一点?
亲切的问候:)
答案 0 :(得分:1)
他们每小时都会得到它并将它添加到他们当前的石头上。
这对你的php服务器端来说是巨大的开销。您可以使用Linux上的cron命令或Windows上的任务管理器来调用脚本计数器,但这是非常糟糕的想法。想象一下,你以后会有100万玩家,你的服务器会经常中止并且工作太慢。
您需要在每个ping_request或specific_harvest_request为唯一用户计算此收获。这样可以减轻负荷。例如:
userA有10块石头,他离开游戏并在20小时后返回游戏,当他登录时你开始CalcHarvestMethod
并且他得到了20*25=500 stones
。收获必须由每个用户计算,不得有这个逻辑的另一个启动器。用户在线时每15秒调用一次ping_request,并在ping_request中调用CalcHarvestMethod
。
现在我需要某种工作来检查所有用户及其当前状态 石
你应该计算每个玩家当前的石头数量,不计算他们离线时可以获得的石头。如上所述,它的开销太大了。