主要网站如何实现这一目标?
他们是硬编码率还是每次查找?
答案 0 :(得分:6)
一个想法是:
答案 1 :(得分:2)
我认为他们定义了一个可接受的时间范围,在这个时间范围内他们会考虑速率“稳固”,并且只在到期时进行查找(无论是30分钟还是6个小时取决于您的决定)。你如何实现这个目标可能是几件事之一,我认为最好的两件事是:
相当简单,将X-to-Y的速率存储在MySQL查找表中。您将需要使用Memory (HEAP) Storage Engine,因为一旦记录过期,这将需要快速和帐户(可能)用于DELETE操作(您可以考虑将值存储在永久表中以用于历史目的)。
您需要实现一个垃圾收集例程,以便在旧条目正常死后清除它们,我建议使用存储过程,同时使用PHP脚本为SP提供1-in- 10次跑步的机会。
编辑:当然你可以使用MySQL以外的东西,但我倾向于推荐它,只因为它是普通PHP开发堆栈的一部分,并且很容易假设你会拥有它。而且,嘿,如果你不这样做,希望你的RDBMS中有一些等同的选择。这非常简单,因为它不需要您设计数据库模式,垃圾收集例程等,但它也不能让您灵活地将历史数据包含在垃圾收集过程中,所以如果你打算保留它,你需要尽快将它存储为历史记录。
老实说,这是个人偏好。在任何一种情况下,它都是易失性数据,因此将其存储在内存中绝对是可行的方法。如果你对MySQL比对Memcached更熟悉,反之亦然,那么就选择你所知道的。
取决于你期望这有多忙;如果每天只有少数人会使用它(例如会计部门的内部应用程序),那么我肯定会投票支持“延迟加载”,因为您可以将您的请求限制为您所需要的。
或者,如果您希望每天有数千(甚至数百)个用户,那么基于cron的系统可能是理想的,因为偶尔用户不必等待数据在不新鲜时被提取。 然而,使用基于cron的系统不应该取代具有适当的垃圾收集系统(如果您使用的解决方案没有内置的解决方案,例如memcached),如果作业失败,如果数据过于陈旧或不存在,应用程序仍应能够根据需要进行延迟加载。
答案 2 :(得分:2)
各种Central Banks,例如ECB,向公众免费提供外汇汇率。
有一个PEAR package for Forex Rates并且自己编码也不难。由于数据通常每天更新,因此您需要添加缓存,以免锤击银行的服务器。
但是,如果您的应用程序正在进行任何时间关键的转换,您应该求助于商业服务,因为这些服务通常会更频繁地更新。我认为雅虎和谷歌有财务API,有人已经提到了XE.com。
答案 3 :(得分:0)
正如其他答案所指出的那样,您需要访问某种API。然而,对于汇率而言,更大的问题是找到一个不花费一条腿和一条腿的问题。我只知道一个XE.com。他们有一个真正的网络服务,起价为每年540美元,无网站计算器嵌入网站和广告驱动的免费嵌入或弹出窗口。