创建基于时间的动态事件(如建筑施工时间等)的最佳方法是啥? [关闭]
Posted
技术标签:
【中文标题】创建基于时间的动态事件(如建筑施工时间等)的最佳方法是啥? [关闭]【英文标题】:What is the best way to create dynamic time-based events like building construction times,etc? [closed]创建基于时间的动态事件(如建筑施工时间等)的最佳方法是什么? [关闭] 【发布时间】:2013-07-09 16:10:42 【问题描述】:我对创建网页游戏(例如 travian.com)很感兴趣。我对php、sql和javascript有一些了解。我的问题是这样的:
创建动态时间事件(如建筑施工时间等)的最佳方式是什么?
我特指在一段时间后自动更改数据库的事件。据我所知,可以使用 chron 查询数据库以获取建筑物建造时间的更新,并在例如建造时间 + 建造开始时间 = 当前时间的情况下更新它们。 这将是一种解决方案(我不喜欢,因为大多数网络服务器只允许 1 分钟的间隔时间)。
另一个解决方案似乎是使用 mysql 事件,其中每次用户要求建造建筑物时,我们都会在数据库上创建一个对象并在事件触发后更新它。这对我来说似乎是最直观的答案。
但是,我没有足够的经验或专业知识来确定是否有更好的解决方案,或者这些解决方案是否以任何方式适用于如此“大”的目的。
如果有人可以就这个问题给我一些启示,或者指出我正确的方向,我将不胜感激。我提前道歉,因为英语不是我的第一语言。
【问题讨论】:
这篇文章会给你一些有用的建议:***.com/questions/122954/timed-events-with-php-mysql 【参考方案1】:我相信这里的答案取决于您需要进行的更新是时间驱动的还是事件驱动的,以及它们是否是对数据库其他部分的专有更新。
如果它们是纯粹的事件驱动和纯粹的数据库更新,那么 SQL 触发器可能是一个可行的选择。即便如此,业界对使用触发器是否是一种好的做法的看法不一,因为这会使未来的开发人员难以找到改变的原因。触发器的另一个缺点是它可能会导致更新时用户的性能变慢(因为数据库要做的工作比初始更新要复杂得多)。
如果更新是时间驱动的,或者它们包括对数据库本身范围之外的任何内容的更新(例如,有时更新文件系统),或者您希望避免使用触发器来简化未来开发人员的维护,那么 cron-工作方法是一个很好的选择。这里的一个问题是,通过 cron 作业安排的大量更新可能会导致性能下降,因此在实施作业时需要减轻这种情况(选择关闭时间是这里的一种选择,实施队列系统也是如此运行更新,以便 cron 作业在让其他数据库请求通过之前只发布一定数量的更新)。
就个人而言,我更喜欢 cron-job + 排队更新过程。
【讨论】:
你好杰弗里,比你的评论。也许我没有正确解释自己,我很抱歉。我正在考虑使用的是 MySQL Event Scheduler(我没有这方面的经验,但听起来就像我想要的那样)。这听起来或多或少像一个定时触发器,所以我希望你的答案涵盖它。但是,我不太确定如何按时间正确地实现它。想象一下某个事件计划在 14:30:45 开始,而 chron 每分钟精确运行一次(这似乎是大多数 chron 服务可用的最小间隔)这会给我留下 30 秒的间隔吗?以上是关于创建基于时间的动态事件(如建筑施工时间等)的最佳方法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章