我正在创建一个拍卖网站,其中拍卖具有特定的结束日期/时间。
我有一个javascript计时器,向用户显示剩余时间,当倒计时时,它会触发并更新后端mongodb数据库,以说拍卖已完成,并通知获胜用户并触发CLOSE函数。
对于当时在浏览器中未实际打开的拍卖,您将如何建议这样做,因此Timer事件永远不会创建此CLOSE事件。
最佳答案
我完全不会推荐这种方法。一旦我在网站上工作,就需要进行拍卖。该项目位于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作业”,请阅读有关此post的其他信息
我希望这使您更清楚地知道如何进行拍卖。
关于javascript - 拍卖网站超时事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32953674/