mysql事件调度是否适当(或最佳)解决方案?

时间:2012-12-11 14:47:03

标签: php mysql

基本上我只是想知道我是否有正确的想法,或者是否存在更好的想法。

我有一个数据库,用于存储当前正在网站上进行的拍卖(或将要进行的)。显然,拍卖结束时会有一个问题。我对网络开发很陌生,只是想知道将数据库中的拍卖状态更改为“已过期”的最佳方法。

我正在使用phpmyadmin和mysql并且已经阅读了一些关于mysql事件调度程序的内容。从我可以收集的内容来看,这似乎是一种很好的方式。在此基础上,我肯定只是每分钟运行一次经常性事件,并且它会根据预定的拍卖结束时间检查当前时间,然后根据需要进行更改?它是否正确?此外,我可以将过期的拍卖移动到旧档案中 - 您认为最适合我的数据库的表现可能是最合适的想法吗?

否则我只是想知道是否有更好(或更简单的方法)做同样的事情。例如ebay这样的网站怎么样呢?非常感谢你提前的时间。

P.S。我意识到这更像是一个概念问题,然后是任何具体的问题。不过我希望它可以问!

2 个答案:

答案 0 :(得分:1)

你的方式过于复杂。您无需在拍卖到期时实际更改拍卖状态。从失效日期开始,状态已经不言自明了。如果您在数据库中有一列expiry_time,那么在拍卖处于活动状态之前的任何时间,任何时候它都会过期。就如此容易。使用适当的查询来查找所有有效的拍卖:

SELECT * FROM `auctions` WHERE `expiry_time` > NOW()

答案 1 :(得分:0)

你可以这样做,但我会建议另一种方法。这是我自己实现的(在游戏中,但具有相同的机制),它就像一个魅力。

您唯一需要做的就是在每个页面加载(在其他任何内容之前)运行一个函数,并检查是否需要将任何内容移动到存档。如果有什么需要照顾,那就去做吧。

如果您这样做,您就会知道访问者看到的页面始终会更新。如果你使用某种类型的cron_job或者你所谈到的事件,那些拍卖中的一些可能会在作业执行几秒后“过期”,因此在几乎一分钟内显示为不正确的活动。