3

首先,我必须声明,这更像是一个“策略”或“算法”之类的问题,我不确定它是否符合这里的规则。如果这是在错误的地方,请原谅我,如果是,请让我知道我应该在哪里提问。没必要敌对。

我也完成了我的研究(阅读诸如Node.js - Monitoring a database for changes or Invoking a PHP script from a MySQL trigger之类的问题),但找不到真正满意的答案,所以......

我的场景:我在一个储备拍卖网站工作。产品的价格设置为 100 美元,在拍卖期间(5 分钟到 10 分钟),价格将随机下降(多次)至随机数量。这些随机的数量和时间其实都是卖家一开始就预设好的。

会有很多买家/观察者,我们需要在价格下跌时用实时价格更新他们。我一直在考虑不同的选择: 1. 我可以使用 node.js 来查看某些文件(每个产品都会有一个文件,其中只包含该产品的当前价格,我们将简单地使用 cron 来更新这些文件?) 2或者,既然我们事先已经知道价格何时会发生变化,我们可以为每个产品设置一个“计时器”,在特定时间唤醒并通知所有观看它的用户?

我认为也可能有一些更好的方法,这就是为什么我想在这里发布它,希望有人已经做过类似的事情可以对我有所启发_

非常感谢您提前。

4

2 回答 2

1

这是一个什么样的数据库?如果是 CouchDB,您可以查看_changes 提要并准确了解更改的时间。如果这些买家使用网络浏览器,他们将更容易与此提要同步。

如果它是另一种没有更改提要的数据库,则应使用 Pub/Sub 并在更新价格后立即发布到渠道。然后您在另一端收听,如果买家在网页上,您可以使用 WebSocket 更新他们的视图。Trello 的基础设施或多或少是这样的(Redis 用于 Pub/Sub,然后它们在订阅中挂钩 Web 套接字以将更新带到网页)。

我认为这些是实时进行的唯一方法。监听事件。每 x 毫秒检查一次是否有变化(又名轮询)不是实时的。

于 2012-08-19T11:06:23.880 回答
0

最简单的方法是提前获取这些日期并在页面加载时将它们发送给客户端,然后在客户端设置计时器。如果您对安全性要求严格,则可以只发送时间,并让客户端仅在即将显示价格时才获取价格。如果两者都不是,您可以定期轮询服务器,或者,如果您可以将数据推送到客户端,我会使用服务器上的计时器方法。

于 2012-08-19T07:29:18.247 回答