【问题标题】:How to implement exchange rate in PHP? [closed]如何在 PHP 中实现汇率? [关闭]
【发布时间】:2018-05-01 17:27:43
【问题描述】:

主要网站如何实现这一点?

他们是硬编码费率还是每次都查一下?

【问题讨论】:

  • 大多数地方会缓存它1分钟,然后让后台任务更新缓存。如果您正在寻找 google 作为 API 的汇率,您可以使用。我的网站上有一个例子:jarloo.com/code/api-code/exchange-rate-api
  • 标题和问题主体在实际问题是什么方面相互矛盾。标题中的问题有点像“gimme teh codez”,正文中的问题是customer support question - 该问题的正确答案是“问他们”TBH。

标签: php


【解决方案1】:

一个想法是:

  • 定期调用一些外部 API,始终获得一些新的汇率(我不知道这会多久改变一次 - 但应该每隔几分钟查看一次汇率)
    • 这可以通过某种 cron 作业来完成,独立于使用此汇率的 Web 应用程序
  • 并将汇率在缓存中保存几分钟:
    • 因此您不会过于频繁地调用外部 API
    • 并且不要过分依赖它(即,如果您从中获取费率的网站下降了几分钟,并且如果获取该数据需要时间,那么您的网站仍然可以工作,它不会减慢您的网站速度,因为它是由 cron 作业定期获取的)

【讨论】:

  • “应该每隔几分钟查看一次费率” - 你最好小心这个,想象一个人买了一个产品,几分钟后打电话给他的朋友告诉他购买相同的产品,当朋友看到价格时,他意识到该产品便宜 x% 或更贵。无论哪种方式,这都会引起混乱。 我说每天更新一次(比如凌晨 4 点)。
  • @Alix 这取决于上下文。如果这是一个日内交易解决方案(或经纪商术语中的任何名称),您可能需要获得每分钟变化的准确汇率。如果它只是一个普通的商店,我同意在 24 小时内或与之前的费率有显着差异时调用它(尽管您示例中的朋友仍然可以在您的缓存过时一分钟后加载页面; ))
【解决方案2】:

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

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

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

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

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

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

这要容易得多,因为它不需要您设计数据库架构、垃圾收集例程等,但它也不能让您灵活地将历史数据作为垃圾收集过程的一部分,所以如果如果您打算保留它,则需要在获得它后立即将其存储为历史记录。

哪个更好?

老实说,这是个人喜好。无论哪种情况,它都是易失性数据,因此将其存储在内存中绝对是可行的方法。如果您对 MySQL 比对 Memcached 更熟悉,反之亦然,那么就使用您所知道的。

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

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

或者,如果您预计每天有数千(甚至数百)个用户,那么基于 cron 的系统可能是理想的,因为偶尔的用户不必等待数据不新鲜时获取。 但是,使用基于 cron 的系统不应替代拥有适当的垃圾收集系统(如果您使用的解决方案没有内置的解决方案,例如 memcached),并且在作业失败的情况下,如果数据太陈旧或不存在,应用程序仍应能够按需延迟加载

【讨论】:

【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多