【问题标题】:Best way to use currency converter for faster result使用货币转换器获得更快结果的最佳方法
【发布时间】:2016-08-27 12:57:47
【问题描述】:

货币我正在使用谷歌金融 api 来转换货币,代码如下

 <?php
      function convertCurrency($amount, $from, $to){
        $url  = "https://www.google.com/finance/converter?a=$amount&from=$from&to=$to";
        $data = file_get_contents($url);
        preg_match("/<span class=bld>(.*)<\/span>/",$data, $converted);
        $converted = preg_replace("/[^0-9.]/", "", $converted[1]);
        return round($converted, 3);
      }

      # Call function  
      echo convertCurrency(1, "USD", "INR");
      ?>

一切正常,我得到了正确的转换,但现在我面临的问题是,在我的网站上会有很多产品,所以我必须使用 foreach 来迭代所有产品,并在迭代循环时使用 i我正在调用货币转换器功能来根据用户位置转换价格,但随着产品的增加,转换所有货币所需的时间也在增加。所以我只想知道有没有其他方法可以进行这种转换所以它不会影响我网站的性能。

【问题讨论】:

标签: php performance api currency codeigniter-3


【解决方案1】:

首先,不要尝试每次都转换所有价格作为起点。您只需要一个转换率,以便每个页面加载一个 api 调用。 假设您将价格从 USD 转换为 GNF(我来自几内亚)。 只需从 1 美元转换 -> ? GNF

$UsdToGnfRate=convertCurrency(1, 'USD', 'GNF')

从现在开始,您可以使用此汇率将您的所有产品价格从美元转换为 GNF,方法是将产品价格乘以您从 api 获得的汇率

foreach($products as $item){
  $localPrice=$item['price'] * $UsdToGnfRate
}

您可以进行一些测试并亲自查看或查找基于汇率的货币换算。这样您就不会为页面上的每个产品调用 api。

【讨论】:

  • 它确实是一个很好的解决方案,但不适用于我的情况..我的要求有点不同。实际上在我的网络应用程序中,用户可以根据他的国家货币从任何地方发布产品,但用户看到该产品会根据他的位置看到货币。例如,如果用户从美国发布报价,那么他将以美元发布,而在几内亚,他将以 GNF 发布,但由于我是印度人,所以我会看到以 INR 为单位的价格,因此对于从 convertCurrency(1, 'USD', 'INR') 到 convertCurrency(1, 'GNF', 'INR')..IN 短于货币的每个报价,此功能都会不断变化
  • 如果是这种情况,那么我建议获取所有货币的转换率并将它们放在一个 php 数组中,这样会更方便。这是我要做的:创建一个转换率表,我将使用 google api 和一个 cron 作业每 6 小时更新一次。每当页面加载时,只需将覆盖率拉入 php 数组即可使用。转换率变化很大,但根据我的经验,6 小时是一个很好的平衡。
  • 感谢队友通过使用您的方法和一些额外的调整,我能够实现该功能。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多