Курс доллара

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

gladskoy
Сообщения: 34
Зарегистрирован: Вс мар 15, 2015 9:36 am
Откуда: Usa

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

Сообщение gladskoy »

кто поможет?
Аватара пользователя
Amarok
Сообщения: 1434
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Контактная информация:

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

Сообщение Amarok »

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

$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y".rand()));
 
Моя Алиска живёт на Proxmox в Debian 12
gladskoy
Сообщения: 34
Зарегистрирован: Вс мар 15, 2015 9:36 am
Откуда: Usa

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

Сообщение gladskoy »

а еще вопрос как проще иконки доллара и евро закинуть на малину?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am

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

Сообщение 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
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm

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

Сообщение chip »

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

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

Спасибо
kawkay
Сообщения: 53
Зарегистрирован: Вс апр 19, 2015 6:10 pm

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

Сообщение kawkay »

// Каждые 30 минут
if ($m%30 == 0) {
callMethod('cbr.update'); // обновляем курсы
say('Обновлены курсы валют');
gladskoy
Сообщения: 34
Зарегистрирован: Вс мар 15, 2015 9:36 am
Откуда: Usa

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

Сообщение 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
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm

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

Сообщение chip »

Скобка не закрыта }

if ($m%30 == 0) {callMethod('cbr.update');}
redmax144
Сообщения: 44
Зарегистрирован: Чт янв 28, 2016 8:18 pm

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

Сообщение 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));
}
flair
Сообщения: 198
Зарегистрирован: Сб янв 16, 2016 12:18 am
Откуда: Минск

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

Сообщение 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));
}
еще бы для полноты картины - написали какие куда объекты свойства добавить и как скрипт запустить - было бы вообще огонь. так сказать инструкция для шапки.
Ответить