Курс доллара
Модератор: immortal
- Amarok
- Сообщения: 1425
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Курс доллара
Код: Выделить всё
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y".rand()));
- Рейтинг: 1.16%
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: Курс доллара
Это тупит сервис НБУ. Перешел по ссылке. Из трех раз два раза страница ушла в Gateway Timeoutchip писал(а):ребят, подскажите, с проблемой:
набросал скриптик для оф курса:
Но странные глюки есть, стоит в onNewHour на выполнения каждые 4-е часа (if (!($h%4)) {callMethod("nbu.update");} // обновим курс валюты каждые 4 часа), но иногда значения просто пропадают, что интересно, иногда и при ручном запуске скрипта из настроек, после нажатия "выполнить" - страница пытается обновится минуты 2-е (при чём ни на одну страницу МДМ в этот момент не пускает, как-будто думает), потом отпускает и при повторном нажатии выполнить - всё работает дальше.Код: Выделить всё
$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']);
ошибок в логах нет...
-
- Сообщения: 158
- Зарегистрирован: Пн ноя 09, 2015 11:03 pm
- Благодарил (а): 43 раза
- Поблагодарили: 7 раз
Re: Курс доллара
Подскажите, как поставить проверку на получение значений, и в случае их отсутствия, что бы скрипт обрабатывался повторно?olehs писал(а): Это тупит сервис НБУ. Перешел по ссылке. Из трех раз два раза страница ушла в Gateway Timeout
ЗЫ и как заставить скрипт (в том же oneminutes) выполняться не раз в минуту а каждые 10-20-30 минут?
Спасибо
-
- Сообщения: 53
- Зарегистрирован: Вс апр 19, 2015 6:10 pm
- Благодарил (а): 83 раза
- Поблагодарили: 13 раз
Re: Курс доллара
// Каждые 30 минут
if ($m%30 == 0) {
callMethod('cbr.update'); // обновляем курсы
say('Обновлены курсы валют');
if ($m%30 == 0) {
callMethod('cbr.update'); // обновляем курсы
say('Обновлены курсы валют');
-
- Сообщения: 34
- Зарегистрирован: Вс мар 15, 2015 9:36 am
- Откуда: Stavropol
- Благодарил (а): 12 раз
- Поблагодарили: 0
Re: Курс доллара
что то не так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
-
- Сообщения: 44
- Зарегистрирован: Чт янв 28, 2016 8:18 pm
- Благодарил (а): 13 раз
- Поблагодарили: 5 раз
Re: Курс доллара
Может кому пригодится, набросал по аналогии метод обновления курсов валют для РБ. Данные берутся из файла XML nbrb.by
СпойлерПоказать
$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));
}
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));
}
-
- Сообщения: 198
- Зарегистрирован: Сб янв 16, 2016 12:18 am
- Откуда: Минск
- Благодарил (а): 16 раз
- Поблагодарили: 15 раз
Re: Курс доллара
еще бы для полноты картины - написали какие куда объекты свойства добавить и как скрипт запустить - было бы вообще огонь. так сказать инструкция для шапки.redmax144 писал(а):Может кому пригодится, набросал по аналогии метод обновления курсов валют для РБ. Данные берутся из файла XML nbrb.byСпойлерПоказать$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));
}