拍卖网站超时活动

时间:2015-10-05 16:44:43

标签: javascript jquery mongodb

我正在创建一个拍卖网站,其中拍卖具有特定的结束日期/时间。 我有一个javascript计时器显示给用户的剩余时间,当这个倒计时它会触发并更新后端mongodb数据库以说明拍卖已经完成并且它通知获胜用户并触发CLOSE功能。

您如何推荐在当时未在浏览器中实际打开的拍卖中执行此操作,以便Timer事件永远不会创建此CLOSE事件。

1 个答案:

答案 0 :(得分:1)

我根本不推荐这种方法。一旦我在网站上工作,我就需要实施拍卖。该项目是在PHP中,所以我写了一个PHP脚本,它检查数据库中的所有拍卖行,并查找那些timeEnd> =当前时间并将其状态设置为关闭(拍卖表具有状态的int列)。

然后我将php脚本设置为每小时运行一次cron job。所以现在服务器每小时自动运行这个服务器端脚本并检查过期的拍卖。间隔取决于应用程序的业务逻辑。对于这个项目,拍卖只能结束或开始每小时的开始。这种方法比使用触发服务器脚本的javascript代码要好得多。一个原因是您不能信任客户端代码。黑客可能会访问该javascript文件并轻松修改它。您永远不应该让您的服务器代码依赖于您的客户端代码。

但是,请注意我的方法并不是最理想的,因为根据您的数据库有多少拍卖,服务器脚本仍然需要时间来处理它,可能需要几秒钟到几分钟来执行它。 例如,如果您有一些拍卖结束于10:00:00并且服务器脚本在10:00:00开始执行并且需要40秒才能执行,那么用户可能会找到一种方法来对这些拍卖进行​​投标。间隔40秒。您的客户端代码应该只关注在10:00:00重置界面,以便用户无法进行出价。但是,您还应确保处理POST请求以进行投标的服务器端代码还应检查拍卖结束时间是否在过去之后再继续。如果它只检查拍卖的状态(打开或关闭),它可能会得到以其状态设置为打开而结束的拍卖。原因是cron工作可能仍在处理拍卖并改变其状态。 另一种类似的方法是创建在操作系统级别(可能是c或c ++应用程序)上运行的服务,该服务将在后台持续运行并进行检查。 第一种方法的好处是大多数托管公司已经提供了设置cron工作。一个例子是Bluehost

用于设置基于Windows的" cron jobs"阅读有关此post

的其他信息

我希望这能让你更清楚如何处理拍卖。