Расширение EX-Rates Yii курсы валют

  • 3 685
  • Нет комментариев
Курсы валют

 

Написал парсер курсов валют для Yii. Данные берутся из Центробанка (xml CBR). Преимущества моего парсера в том, что он не нагружает сервер, нет никаких заданий в кроне, а проверка актуальности курсов происходит путём сравнения даты последнего обновления и заданного интервала.

Например, если мы задали интервал обновления 24 часа и данные были загружены 16.04.2014 в 15:00, а сейчас 17.04.2014 16:00, то курсы обновятся. Если же сейчас 17.04.2014 14:00, то курсы не обновятся и отдадутся те, которые есть в базе на данный момент, т.к. 24 часа ещё не прошло. Думаю идея ясна.

Установка

  1. [su_button url=»https://zabolotskikh.com/wp-content/uploads/2014/04/ex_rates.zip» size=»4″ radius=»0″ icon=»icon: bolt»]Скачать расширение EX-Rates Yii курсы валют[/su_button]
  2. Скопировать папку ex_rates в protected/extensions
  3. В config/main.php дописать:
    'components'=>array(
        'ex_rates'=>array(
            'class'=>'ext.ex_rates.EX_Rates',
        ),
    )
  4. Создать таблицу в БД следующей структуры:

    Таблица курсов валют

    CREATE TABLE IF NOT EXISTS `gde_vzjat_deneg`.`ex_rates` (
      `code` VARCHAR(3) NOT NULL COMMENT 'Код',
      `currency` VARCHAR(128) NOT NULL COMMENT 'Валюта',
      `course` DECIMAL(8,4) NOT NULL COMMENT 'Курс',
      `nominal` INT NOT NULL COMMENT 'Номинал',
      PRIMARY KEY (`code`))
    ENGINE = InnoDB

Использование

В любом месте приложения пишем: Yii::app()->ex_rates->courses() и получаем массив с курсами следующего вида:

array(
    'USD' => array(
        'currency'=>'Доллар США',
        'nominal' => 1,
        'value' => 33.8161,
    ),
    'EUR' => array(
        'currency'=>'Евро',
        'nominal' => 1,
        'value' => 45.8242,
    ),
);

Хотите использовать модель для таблицы ex_rates? Нет проблем, просто допишите в поведении beforeFind() следующую строку: Yii::app()->ex_rates . Это инициализирует компонент EX-Rates и у вас всегда будут свежие данные.

Понравилась статья? Оцени её!
Комментарии (0)
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *