Skip to content

pastushenko/fastvps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Курсы валют Задание тут ##Руководство по установке: Для работы приложения необходимы php 5.4 и драйвер php-mysql. Также необходимо установить mysql. Необходимо создать пользователя и бд (тип хранилища InnoDB).

  • Сперва склонируйте к себе проект: git clone https://github.com/pastushenko/fastvps.git
  • Выполните composer: php composer.phar install
  • Укажите настроки бд.
  • Выполните команду генерирующею схему бд: ./app/console doctrine:schema:create
  • Для запуска веб сервера используйте комманду: ./app/console server:run

##Схема работы приложения:

  • Есть консольная комманда позволяющея обновлять курсы валют с удаленного сервера.
  • Данные о курсах валют, поченные с удаленного сервера, сохраняются в локальную mysql бд.
  • В качестве удалленного сервера выбран сайт центробанка, предоставляющий xml интерфейс для получения курса валют (http://www.cbr.ru/scripts/XML_daily.asp?date_req=06/01/2014).
  • Курс валют поддерживаемый системой настраивается в DI контэйнере UiBundl'а (src/Exchange/UiBundle/Resources/config/services.xml).
  • Чтобы запустить обновление курсов валют запустите: ./app/console rates:update.
  • Комманда обновит курсы только если они не актуальны. В ином случае выдаст сообщение о том что нет надобности обновлять курсы, так как они актуальны.
  • В случае если в конфигурацию будет добавлен новый курс валют, комманда выполнит единоразовое обновление всех курсов, вне зависимости от их актуальности.
  • ttl для курсов валют, получаемых консольной коммандой выставляется в DI файле UtilsBundl'a src/Exchange/UtilsBundle/Resources/config/services.xml.
  • Предпологается что комманда (./app/console rates:update) будет висеть на кроне, раз в минуту, и проверять актуальность данных, и в случае необхожимости их обновлять.
  • Предосмотренно что может быть использован другой сервис/источник для получения курсов валют.

##Страница с курсом валют:

  • На странице использован bootstrap3, jQuery.
  • На странице отображаются 4 основные валюты (настроено в DI).
  • Также можно запросить дополнительные валюты из разрешенных.

В UI присутствуют 2 кнопки:

  • Обновить из локальной БД - получение новых курсов из локальной базы данных.
  • Обновить из удаленного сервера - обновление курсов валют (в локальной базу) из удаленного сервера и получение новых курсов из локальной базы данных.

Оба действия совершаются ajax запросами. Создано небольшое json api.

  • /api/v1/rates/get - возвращает данные о запрашеваемых курсах валют.

  • /api/v1/rates/update - обновляет курсы валют с удаленного сервера и возвращает данные о запрашеваемых курсах валют. (Обновление курса валют с удаленного сервера происзводится не чаще чем раз в 10 секунд. Настройку времени можете найти в DI UiBundl'а.) Обновление валют с удаленного сервера по запросу пользователя происводится тем же сервисом что и обновление курса валют по консольной комманде, только сконфигурированного по другому (другой ttl у данных).

  • Для экономии времени, и большей наглядности происходящего - я вывел сообщения от json api, о успешности тех или иных ajax запросов, алертами.

  • В случае если вам понравистся тестовое задание, готов в свободное время прикрутить кэш на redis'e.

  • Он будет как прослойка между контроллером и репозиторием.

  • А также допилить внешний вид сообщений.

About

Тестовое задание для компании ФастВПС Лимитед

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published