/** * Получает курсы валют ЦБ и обновляет их у нас (используется в crone файл hourly.php) */ function updateCBRates() { // Удаляем старые курсы из кеша $memBuff = new memBuff(); $memBuff->delete('getCBRates'); $CBRates = getCBRates(); if ($CBRates) { $pex = self::GetAll(false); $exs = array(); $exs[12] = $pex[12]; $exs[13] = $pex[13]; $exs[14] = $pex[14]; $exs[24] = str_replace(",", ".", $CBRates['USD']['Value']); $exs[34] = str_replace(",", ".", $CBRates['EUR']['Value']); $error = 0; foreach ($exs as $k => $v) { if ((double) $v <= 0) { $error = 1; break; } $pex[$k] = $v; } if (!$error) { $ex_cnt = 4; for ($i = 1; $i <= $ex_cnt; $i++) { @($pex[$i . '1'] = 1 / $pex['1' . $i]); $pex[$i . $i] = 1; } for ($i = 2; $i <= $ex_cnt; $i++) { for ($j = 2; $j <= $ex_cnt; $j++) { $pex[$j . $i] = $pex[$j . $j] / $pex[$i . $j]; } } self::BatchUpdate($pex); } } }
<?php ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../'), '/'); } $path = $_SERVER['DOCUMENT_ROOT']; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; $result = getCBRates(); var_dump($result);
/** * Переводит доллары в рубли курсу сайта ЦБ * * @param float $usd_sum сумма в долларах * @return float сумма в рублях */ function usd2rur($usd_sum) { $rates = getCBRates(); return $usd_sum * str_replace(',', '.', $rates['USD']['Value']); }