【发布时间】:2015-10-27 20:30:07
【问题描述】:
我正在使用 yahoo 货币转换器 API 来转换数据库中列出的每个产品在页面上显示时的货币。
功能一
function currencyConverter($currency_from,$currency_to,$currency_input){
$yql_base_url = "http://query.yahooapis.com/v1/public/yql";
$yql_query = 'select * from yahoo.finance.xchange where pair in ("'.$currency_from.$currency_to.'")';
$yql_query_url = $yql_base_url . "?q=" . urlencode($yql_query);
$yql_query_url .= "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
$yql_session = curl_init($yql_query_url);
curl_setopt($yql_session, CURLOPT_RETURNTRANSFER,true);
$yqlexec = curl_exec($yql_session);
$yql_json = json_decode($yqlexec,true);
$currency_output = (float) $currency_input*$yql_json['query']['results']['rate']['Rate'];
return $currency_output;
}
功能二
function getProducts($currency)
{
if ($result = $connection->query("SELECT `name`, `price` FROM `products`")) {
$product_count = mysqli_num_rows($result);
if ($product_count >0) {
$output = "";
while ($row = mysqli_fetch_assoc($result)) {
$price = currencyConverter("USD", $currency, $row['item_price']);
$output = $output."<div class='item'><h3 class='product-name'>".$row['item_name']."</h3><h3 class='product-price'>".$currency." ".$price."</h3></div></div>";
}
echo $output;
mysqli_free_result($result);
} else {
echo "nope";
}
} else {
echo "failed";
}
}
产品的价格以美元保存在数据库中。问题是它需要很长时间才能转换每个价格。有更好的方法吗?
【问题讨论】:
-
哪位花费的时间最多?
-
我刚刚意识到我可以使用 currencyConverter() 函数只获得一次转换率,然后在 while 循环中进行数学运算,而不是在每次迭代中调用 currencyConverter() 函数。
-
@nadz 我敢打赌,你最慢的线路是拨打
curl_exec,因为你正在雅虎的服务器上等待。所以是的,如果你可以只调用一次并缓存结果,其他一切都会显着加快。 -
每天调用一次