#Курсы валют Задание тут ##Руководство по установке: Для работы приложения необходимы 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.
-
Он будет как прослойка между контроллером и репозиторием.
-
А также допилить внешний вид сообщений.