Страница 5 из 6

Re: Курс доллара

Добавлено: Сб дек 19, 2015 8:55 am
gladskoy
кто поможет?

Re: Курс доллара

Добавлено: Сб дек 19, 2015 4:17 pm
Amarok

Код: Выделить всё

$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y".rand()));
 

Re: Курс доллара

Добавлено: Сб дек 19, 2015 10:12 pm
gladskoy
а еще вопрос как проще иконки доллара и евро закинуть на малину?

Re: Курс доллара

Добавлено: Вс дек 20, 2015 12:18 am
olehs
chip писал(а):ребят, подскажите, с проблемой:

набросал скриптик для оф курса:

Код: Выделить всё

$s = file_get_contents('http://bank.gov.ua/NBUStatService/v1/statdirectory?exchange&json');

$json = json_decode($s);

$rates = array(
 'USD'=>null,
 'EUR'=>null,
 'RUB'=>null
);
foreach ($json as $currency){
 if (array_key_exists($currency->cc, $rates)){
     $rates[$currency->cc] = round($currency->rate, 2);
 }
}

sg("nbu.USD",$rates['USD']);
sg("nbu.EUR",$rates['EUR']);
sg("nbu.RUB",$rates['RUB']);
Но странные глюки есть, стоит в onNewHour на выполнения каждые 4-е часа (if (!($h%4)) {callMethod("nbu.update");} // обновим курс валюты каждые 4 часа), но иногда значения просто пропадают, что интересно, иногда и при ручном запуске скрипта из настроек, после нажатия "выполнить" - страница пытается обновится минуты 2-е (при чём ни на одну страницу МДМ в этот момент не пускает, как-будто думает), потом отпускает и при повторном нажатии выполнить - всё работает дальше.

ошибок в логах нет...
Это тупит сервис НБУ. Перешел по ссылке. Из трех раз два раза страница ушла в Gateway Timeout

Re: Курс доллара

Добавлено: Чт дек 24, 2015 3:00 pm
chip
olehs писал(а): Это тупит сервис НБУ. Перешел по ссылке. Из трех раз два раза страница ушла в Gateway Timeout
Подскажите, как поставить проверку на получение значений, и в случае их отсутствия, что бы скрипт обрабатывался повторно?

ЗЫ и как заставить скрипт (в том же oneminutes) выполняться не раз в минуту а каждые 10-20-30 минут?

Спасибо

Re: Курс доллара

Добавлено: Пт дек 25, 2015 2:32 pm
kawkay
// Каждые 30 минут
if ($m%30 == 0) {
callMethod('cbr.update'); // обновляем курсы
say('Обновлены курсы валют');

Re: Курс доллара

Добавлено: Пт дек 25, 2015 9:04 pm
gladskoy
kawkay писал(а):// Каждые 30 минут
if ($m%30 == 0) {
callMethod('cbr.update'); // обновляем курсы
say('Обновлены курсы валют');
что то не так

ругается

Код: Выделить всё

Parse error: syntax error, unexpected 'echo' (T_ECHO) in /var/www/cached/fafe4483900e2737bb025eded665ec2e.php on line 5

Re: Курс доллара

Добавлено: Сб дек 26, 2015 1:29 pm
chip
Скобка не закрыта }

if ($m%30 == 0) {callMethod('cbr.update');}

Re: Курс доллара

Добавлено: Вс фев 14, 2016 6:04 pm
redmax144
Может кому пригодится, набросал по аналогии метод обновления курсов валют для РБ. Данные берутся из файла XML nbrb.by
SPOILERSPOILER_SHOW
$file = simplexml_load_file("http://www.nbrb.by/Services/XmlExRates. ... ate("m/d/Y"));
if (!$file){
DebMes("CBR error");
return;
}

// USD
$xml = $file->xpath("//Currency[@Id='145']");
$valute = strval($xml[0]->Rate);
$this->setProperty('USD', round(str_replace(",",".",$valute)*100)/100);

// EURO
$xml = $file->xpath("//Currency[@Id='19']");
$valute = strval($xml[0]->Rate);
$this->setProperty('EUR', round(str_replace(",",".",$valute)*100)/100);

// RUB
$xml = $file->xpath("//Currency[@Id='190']");
$valute = strval($xml[0]->Rate);
$this->setProperty('RUB', round(str_replace(",",".",$valute)*100)/100);

$this->setProperty("uptime",date("d.m.Y - H:i:s",time()));
$this->setProperty("updatedTimestamp",time());
$sayMetUSD = gg ("Sets.sayMetUSD");
if ($sayMetUSD) {
say ("Обновлены курсы валют",($sayMetUSD-2));
}

Re: Курс доллара

Добавлено: Вс фев 14, 2016 7:56 pm
flair
redmax144 писал(а):Может кому пригодится, набросал по аналогии метод обновления курсов валют для РБ. Данные берутся из файла XML nbrb.by
SPOILERSPOILER_SHOW
$file = simplexml_load_file("http://www.nbrb.by/Services/XmlExRates. ... ate("m/d/Y"));
if (!$file){
DebMes("CBR error");
return;
}

// USD
$xml = $file->xpath("//Currency[@Id='145']");
$valute = strval($xml[0]->Rate);
$this->setProperty('USD', round(str_replace(",",".",$valute)*100)/100);

// EURO
$xml = $file->xpath("//Currency[@Id='19']");
$valute = strval($xml[0]->Rate);
$this->setProperty('EUR', round(str_replace(",",".",$valute)*100)/100);

// RUB
$xml = $file->xpath("//Currency[@Id='190']");
$valute = strval($xml[0]->Rate);
$this->setProperty('RUB', round(str_replace(",",".",$valute)*100)/100);

$this->setProperty("uptime",date("d.m.Y - H:i:s",time()));
$this->setProperty("updatedTimestamp",time());
$sayMetUSD = gg ("Sets.sayMetUSD");
if ($sayMetUSD) {
say ("Обновлены курсы валют",($sayMetUSD-2));
}
еще бы для полноты картины - написали какие куда объекты свойства добавить и как скрипт запустить - было бы вообще огонь. так сказать инструкция для шапки.