Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
浏览器游戏PHP+MySQL每秒增加资源_Php_Mysql_Database_Browser - Fatal编程技术网

浏览器游戏PHP+MySQL每秒增加资源

浏览器游戏PHP+MySQL每秒增加资源,php,mysql,database,browser,Php,Mysql,Database,Browser,我正在创建一个小型浏览器游戏,并正在编写资源处理程序。 我正在使用PHP和MySQL数据库。 我意识到我不能每秒更新数据库以增加我的资源,因此阅读Stackoverflow,我发现了以下帖子: 我还试图用PHP制作一个在线游戏,也遇到了这个问题 问题我的解决方案实际上相当简单。假设你是 使用不同的城市或行星,您将需要一个数据库表 城市/星球。在此数据库中存储当前资源和 每小时的资源。还有一个时间戳 例如,对于升级资源设施金矿,我有一个 包含所有具有开始时间和结束时间的建筑问题的数据库 时间 然后

我正在创建一个小型浏览器游戏,并正在编写资源处理程序。 我正在使用PHP和MySQL数据库。 我意识到我不能每秒更新数据库以增加我的资源,因此阅读Stackoverflow,我发现了以下帖子:

我还试图用PHP制作一个在线游戏,也遇到了这个问题 问题我的解决方案实际上相当简单。假设你是 使用不同的城市或行星,您将需要一个数据库表 城市/星球。在此数据库中存储当前资源和 每小时的资源。还有一个时间戳

例如,对于升级资源设施金矿,我有一个 包含所有具有开始时间和结束时间的建筑问题的数据库 时间

然后我制作了一个页面,在游戏的每一页上都包含了这个页面。信息技术 首先检查是否有 所选城市的任何建筑ques 应在上次输入数据库后完成。如果那是金子 我的工作是在12点完成的,你所在城市的时间戳是 11.00,当前时间为13.00。页面所做的是计算11.00到12.00之间的所有资源。然后它将更新 城市表中的每小时黄金。然后它重新计算 资源从12:00至13:00

当上述所有操作完成后,它会将时间戳放在current上。但作为 从第二次运行开始,您每小时拥有所有资源,您可以存储 它在一个数组中运行,并让一个本地计时器运行以更新上的资源 屏幕但是因为你在每一页上都包含了上面提到的那一页, 当您转到下一页时,它将访问数据库以查看内容 目前的资源应该得到充分利用。因此,本地数据仅供参考 观看。 杜切乔

这是链接:

我对事件队列进行了编程,一切正常。现在的问题是,如果玩家在线,增加资源。 如果我按时间保存播放器的最后一次登录,然后计算新的产量,我有一个问题:

"UPDATE `stats` SET `rock` = `rock`+(('".time()."' - $last_login)*$rock_production)
我做:时间-$last\u登录。如果每次玩家重新加载或更改页面时我保存最后一次登录,则此差异将始终为0。 因为这两倍是相等的。
如何每秒增加资源?

只在启动会话时更新,而不是在每次加载页面时更新上次登录。您可以在每次页面加载时更新第二个字段,并将差异用于计算。这两个字段还可用于指示即使在用户断开连接后,最近一次联机的持续时间

[编辑]:


使用更新触发器怎么样?在一条语句中,您可以使用上次登录的两个值—新值和原始值。

您好,谢谢您的回答。我能做到,但我想我的问题也一样。我将始终计算0-差异,并且,我不能使用启动会话时保存的上次登录,因为上次登录和当前登录之间的差异,玩家可能会花费一些资源。这是洞查询吗?因此,您将更新所有行SSO,计算在线时赚取的金额,然后减去用于获取当前金额的金额。换言之,使用最后一次登录来确定他们在线的时间,从而获得rock,然后通过他们的花费来减少。保持简单。如果你不断地从起点出发,就很容易不给他们应得的荣誉。或者,您可以读取记录,获取上次登录时的值,然后更新记录。如果您选择该路径,我建议使用一个存储过程来进行更新,这样更新只需从代码中调用一次即可完成。