2011-06-12 85 views
0

有一天一位朋友建议玩一款名为OGame的网络浏览器游戏。如果你不知道它,我会告诉你它是什么:一个rts游戏,你必须建立像采矿工厂,军营等等。有趣的是,每个建筑物都有建筑时间,并且您可以在建筑时注销,因为它会继续进行。是否有可能在mysql5中有一个“内部”cron?

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

回答

2

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

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

Creating a daemon in PHP(如果你使用PHP)

希望有所帮助。

+0

那么,如果您使用特定dbms的某些特定功能,那么重写问题是一个真正的问题。我会考虑在php,tnx中创建一个deamon。 – dierre 2011-06-12 15:50:11

相关问题