0

前几天,一位朋友建议玩一款名为 OGame 的网络浏览器游戏。如果你不知道,我会告诉你它是什么:一个 rts 游戏,你必须在其中建造诸如采矿工厂、兵营之类的东西。有趣的是,每个建筑物都有一个构建时间,您可以在它构建时注销,因为它会继续运行。

我相信这样的事情是通过 dbms 管理的。我有我的记录,我有一个建筑的结束时间。如何检查何时更新建筑物?我是否需要一个外部应用程序每秒检查需要更新的记录?mysql5 是否有可能有一个内部调度程序在这个表上启动一个过程?如果是这样,这是最佳做法吗?

4

1 回答 1

2

我已经构建了一个类似的游戏,并将构建结束时间(以及要触发的其他事件)存储在事件表中。我编写了一个 PHP 守护程序,它定期检查事件表中的过期记录并相应地对其进行操作。

我找不到在数据库本身中执行此操作的方法(如果我以后想迁移到另一个数据库,则需要重写)。一个 cron 的脚本可能会重叠。守护进程可以一直跟踪所有内容,并在事件排队的速度快于处理速度时输出调试信息。我还添加了一个 cron 来定期检查我的守护进程是否仍在运行,否则启动它。

在 PHP 中创建一个守护进程(如果您使用的是 PHP)

希望有帮助。

于 2011-06-12T13:13:51.793 回答