希望有人可以帮助我寻找正确的方向来解决我在系统设计过程中遇到的这个问题。
我正在创建一个拍卖网站,其中拍卖具有特定的结束日期/时间。
我有一个 .NET 计时器向用户显示剩余时间,当它倒计时时它会触发并更新后端 SQL 数据库以表示拍卖已经完成,它会通知获胜用户并触发 CLOSE 函数。
您如何建议对当时未在浏览器中实际打开的拍卖执行此操作,以便 Timer 事件永远不会创建此 CLOSE 事件。
理想情况下,我需要在拍卖结束时间过去的时间点运行一些东西?
谢谢
希望有人可以帮助我寻找正确的方向来解决我在系统设计过程中遇到的这个问题。
我正在创建一个拍卖网站,其中拍卖具有特定的结束日期/时间。
我有一个 .NET 计时器向用户显示剩余时间,当它倒计时时它会触发并更新后端 SQL 数据库以表示拍卖已经完成,它会通知获胜用户并触发 CLOSE 函数。
您如何建议对当时未在浏览器中实际打开的拍卖执行此操作,以便 Timer 事件永远不会创建此 CLOSE 事件。
理想情况下,我需要在拍卖结束时间过去的时间点运行一些东西?
谢谢
一种选择是将拍卖项目结束/结束的日期/时间存储在数据库中。然后,不要担心对它的关闭有反应(在你的情况下是客户端的计时器)并更新它关闭。决定它关闭的原因仅仅是现在 > 关闭日期/时间。
编辑:
在下面的评论中,您说您还需要在拍卖结束时发送邮件。如果是这种情况,您需要某种后台处理来选择所有关闭的事件并发送邮件。您仍然可以通过存储日期时间来定义关闭。该 bg 处理可以选择所有现在大于关闭日期且已处理位为假的事件。选择这些后,将它们放入持久队列(sql 中的表、azure 队列等......)。然后让后台处理排空队列。当它处理每个项目并发送邮件时,它会将事件更新为已处理。
您有多种后台处理选项:
编写一个 Windows 服务,在设定的时间轮询数据库(我会说比拍卖的最短时间短一点。例如,说一天)。该服务将在内存中存储将在该时间内结束的动作,并每秒检查是否有结束的动作。对于已经结束的拍卖,触发您的 CLOSE 事件。