PHP-你将如何建造建筑物或完成类似的事情等?

PHP-你将如何建造建筑物或完成类似的事情等?,php,Php,所以,正如你所知,在一些浏览器游戏中,如《特拉维安》、《部落战争》等,你可以建造一座建筑,它需要花费X个时间,然后完成。 所以我很好奇这是怎么做到的 它是每秒运行一次的cron作业还是什么?那么他们如何处理军队呢?他们不能让cron作业以毫秒的速度运行,这不利于资源的使用,对吗 所以我真的很好奇,我不知道,所以我不能说我真的试过了。然而,我四处寻找,却从未发现任何有用的东西 谢谢。实现此类功能的最简单方法是简单的时间戳。前端的请求根据请求细节(您正在建造的建筑类型、级别,如果您购买了升级版)提供

所以,正如你所知,在一些浏览器游戏中,如《特拉维安》、《部落战争》等,你可以建造一座建筑,它需要花费X个时间,然后完成。 所以我很好奇这是怎么做到的

它是每秒运行一次的cron作业还是什么?那么他们如何处理军队呢?他们不能让cron作业以毫秒的速度运行,这不利于资源的使用,对吗

所以我真的很好奇,我不知道,所以我不能说我真的试过了。然而,我四处寻找,却从未发现任何有用的东西


谢谢。

实现此类功能的最简单方法是简单的时间戳。前端的请求根据请求细节(您正在建造的建筑类型、级别,如果您购买了升级版)提供的约束生成时间戳。然后在数据库中插入完成时间戳。然后,如果希望在作业启动时刷新浏览器,可以在js上创建一个脚本,请求队列中的所有时间戳,并在它们出现时重新加载

一种方法:让客户端处理计时器。因此,计时器将位于浏览器端,使用javascript进行倒计时。当时间到了,它会联系服务器,看看它是否有效(永远不要相信客户端代码)。服务器查找该建筑,并查看该建筑是否已完工。服务器端不需要保留任何计时器,它只回答请求。计时器是UI端的

好吧,PHP是构建游戏最糟糕的东西之一。。。在游戏中,一切都由控制游戏的主循环控制。因此,基本上,在游戏中,所有东西都在一个无限循环中运行,尽管很明显,这个循环允许用户输入而不会冻结计算机。因此,循环也会考虑计时,计算计时的方法将取决于游戏开发所使用的语言。对于基于web的游戏,Java、JavaScript和Flash是常见的选择。

解决方案是:可以将构建开始的时间保存在数据库中,然后根据数据库中保存的时间计算用户打开游戏时的时间(减去2个日期),然后倒计时继续基于客户端事件,:永远运行PHP脚本(while loop?)检查传入数据和处理传出数据。老实说,我不会使用PHP;你需要一个守护进程。嗯,但是如果没有JS,你如何让它能够自己完成它?(所以你不必永远坐在页面上)任何时候,只要有来自外部村庄的针对城市/村庄/城镇的请求,一个简单的请求,或者观众的页面视图,那么计算就会完成。你不必对其进行cron,因为除非有人询问,否则它永远不必完成。Java在为web构建游戏方面绝不比PHP更好。你可以使用PHP服务ce在后台运行就像在java服务中运行一样简单。仅仅因为你不欣赏一种语言并不意味着它是错误的。好吧,我只对Visual Basic 6和PHP有经验。我听说过多少次用PHP制作的游戏?嗯……从来没有。仅仅因为我说PHP不适合游戏,并不意味着我不喜欢我不欣赏它。我欣赏每一种有用的语言。他在列表中引用的一款游戏使用PHP(TribalWars)。你怎么从来没有听说过呢?有PHP版本的国际象棋、井字游戏和奥赛罗。并非所有的游戏都是图形密集型循环游戏。