gpt4 book ai didi

php - 在特定时间戳更新信息

转载 作者:行者123 更新时间:2023-11-29 13:11:38 26 4
gpt4 key购买 nike

我会尽力以最好的方式解释我的问题。我不是要代码,只是要最好的方法。

我想创建一个浏览器游戏并利用时间来升级东西、构建等。

例如, build 1 栋房子需要 1 小时。

因此,我将首先保存用户执行操作时的timestamp+(60*60)

我的问题是,如何最好地更新它?

我想到的一种方法是添加功能来检查用户的每个页面 View 是否已完成。但如果他没有登录,更新就不会发生。

我想到的第二种方法是对任何用户的每个页面 View 检查每个注册的用户。但效果并不好,如果没有用户登录就会出现问题。

有什么建议吗?

最佳答案

我让我的游戏简单地完成它,没有 crons。当玩家想要一些需要时间的东西时,我只是用结束该工作的适当时间更新了他的数据库信息(列只是示例)

UPDATE player SET jobend = UNIX_TIMESTAMP() + (60*60*4)   # ending in 4 hours

然后,每个包含剩余时间信息的页面,我都使用了如下内容:

SELECT (jobend - UNIX_TIMESTAMP()) AS jobremaining FROM player

我使用 strftime 正确格式化了时间我向用户展示了它。如果剩余时间为负数,则工作完成。不需要绝对计数,因为用户在连接时就可以对作业执行某些操作。

当玩家刚刚更改页面或执行其他操作时,我有一个功能,我只是在用户在线时检查所有及时事件(以便捕获任何负计时器),然后向 javascript 呈现任何更改(我发布了 javascript 计数器每页)

现在,如果您谈论实时更新,cron 就是一种方法,但您确定游戏需要它吗?我自己也问过这个问题,答案是否定的。

编辑

如果另一个玩家看到按计划 build 页面(假设页面),我会进行相同的计算;如果某个特定玩家的时间为负数(无论其他玩家是否看到该页面),我只会用建筑物奖励他(在数据库中我进行所有更改),即使他离线。这并没有什么坏处,因为他无论如何也做不到。其他玩家只会看到他有一座建筑物。这里的关键是,无论玩家是否连接到游戏,我都会执行所需的更新 PHP 代码;只要至少有一名玩家登录,我就会为所有内容执行进度功能。这并不像听起来那么慢(仅使用访问特定页面的连接播放器来更新所有播放器)。您只有一个“作业”表并根据当前时间检查计时器。更像是获取负数的单个查询。

关于php - 在特定时间戳更新信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22021182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com