Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 拍卖网站超时事件_Javascript_Jquery_Mongodb - Fatal编程技术网

Javascript 拍卖网站超时事件

Javascript 拍卖网站超时事件,javascript,jquery,mongodb,Javascript,Jquery,Mongodb,我正在创建一个拍卖网站,其中拍卖有一个特定的结束日期/时间。 我有一个javascript计时器,向用户显示剩余时间,当该计时器计数下降时,它会触发事件并更新后端mongodb数据库,以表示拍卖已完成,它会通知获胜用户并启动关闭功能 对于当时未在浏览器中实际打开的拍卖,您建议如何执行此操作,以便计时器事件不会创建此关闭事件。我根本不建议使用此方法。有一次我在一个网站上工作,我需要实施拍卖。该项目是用php编写的,因此我编写了一个php脚本,用于检查数据库中的所有拍卖行,查找那些timeEnd>=

我正在创建一个拍卖网站,其中拍卖有一个特定的结束日期/时间。 我有一个javascript计时器,向用户显示剩余时间,当该计时器计数下降时,它会触发事件并更新后端mongodb数据库,以表示拍卖已完成,它会通知获胜用户并启动关闭功能


对于当时未在浏览器中实际打开的拍卖,您建议如何执行此操作,以便计时器事件不会创建此关闭事件。

我根本不建议使用此方法。有一次我在一个网站上工作,我需要实施拍卖。该项目是用php编写的,因此我编写了一个php脚本,用于检查数据库中的所有拍卖行,查找那些timeEnd>=当前时间的拍卖行,并将其状态设置为closed(拍卖表中有int列作为状态)

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

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

要设置基于windows的“cron作业”,请阅读有关此操作的其他信息


我希望这能让您更清楚地了解如何处理拍卖。

计时器应该与用户的浏览器没有关系。它们都应该在服务器上完成。感谢您的详细解释。你帮了我很多。我决定使用节点cron。