如何在PHP中实现汇率?

时间:2009-12-29 08:35:40

标签: php

主要网站如何实现这一目标?

他们是硬编码率还是每次查找?

4 个答案:

答案 0 :(得分:6)

一个想法是:

  • 定期调用一些外部API,总是有一些新的汇率(我不知道这种情况经常发生变化 - 但每隔几分钟应该看一次加价)
    • 这可以通过某种cron作业完成,独立于使用此汇率的网络应用程序
  • 并将缓存中的汇率保持几分钟:
    • 所以你不要经常调用外部API
    • 并且不要太依赖(即如果您提取费率的网站停止了几分钟,您的网站仍然有用 - 并且如果需要时间来获取该数据,它不会减慢你的网站速度,因为它是由一个cron工作定期提取的)

答案 1 :(得分:2)

我认为他们定义了一个可接受的时间范围,在这个时间范围内他们会考虑速率“稳固”,并且只在到期时进行查找(无论是30分钟还是6个小时取决于您的决定)。你如何实现这个目标可能是几件事之一,我认为最好的两件事是:

在MySQL中存储速率和查找时间

相当简单,将X-to-Y的速率存储在MySQL查找表中。您将需要使用Memory (HEAP) Storage Engine,因为一旦记录过期,这将需要快速和帐户(可能)用于DELETE操作(您可以考虑将值存储在永久表中以用于历史目的)。

您需要实现一个垃圾收集例程,以便在旧条目正常死后清除它们,我建议使用存储过程,同时使用PHP脚本为SP提供1-in- 10次​​跑步的机会。

编辑:当然你可以使用MySQL以外的东西,但我倾向于推荐它,只因为它是普通PHP开发堆栈的一部分,并且很容易假设你会拥有它。而且,嘿,如果你不这样做,希望你的RDBMS中有一些等同的选择。

将速率存储在内存缓存系统(例如memcached)

这非常简单,因为它不需要您设计数据库模式,垃圾收集例程等,但它也不能让您灵活地将历史数据包含在垃圾收集过程中,所以如果你打算保留它,你需要尽快将它存储为历史记录。

哪个更好?

老实说,这是个人偏好。在任何一种情况下,它都是易失性数据,因此将其存储在内存中绝对是可行的方法。如果你对MySQL比对Memcached更熟悉,反之亦然,那么就选择你所知道的。

基于Cron的加载还是延迟加载?

取决于你期望这有多忙;如果每天只有少数人会使用它(例如会计部门的内部应用程序),那么我肯定会投票支持“延迟加载”,因为您可以将您的请求限制为您所需要的。

或者,如果您希望每天有数千(甚至数百)个用户,那么基于cron的系统可能是理想的,因为偶尔用户不必等待数据在不新鲜时被提取。 然而,使用基于cron的系统不应该取代具有适当的垃圾收集系统(如果您使用的解决方案没有内置的解决方案,例如memcached),如果作业失败,如果数据过于陈旧或不存在,应用程序仍应能够根据需要进行延迟加载

答案 2 :(得分:2)

各种Central Banks,例如ECB,向公众免费提供外汇汇率。

有一个PEAR package for Forex Rates并且自己编码也不难。由于数据通常每天更新,因此您需要添加缓存,以免锤击银行的服务器。

但是,如果您的应用程序正在进行任何时间关键的转换,您应该求助于商业服务,因为这些服务通常会更频繁地更新。我认为雅虎和谷歌有财务API,有人已经提到了XE.com。

答案 3 :(得分:0)

正如其他答案所指出的那样,您需要访问某种API。然而,对于汇率而言,更大的问题是找到一个不花费一条腿和一条腿的问题。我只知道一个XE.com。他们有一个真正的网络服务,起价为每年540美元,无网站计算器嵌入网站和广告驱动的免费嵌入或弹出窗口。

相关问题