Получайте новые записи в блоге через RSS RSS
16 ноября 2009 | Свое дело

Багфиксы сервиса сравнения курсов валют

Я почти с самого начала столкнулся с тем, что вывод данных о курсе валют на сайте банка может неожиданно поменяться. Или вовсе исчезнуть. Поэтому данные в сервисе обновляются только если значение переменной с курсом больше ноля. Это спасает в тех случаях, когда банк не публикует данные в выходные и ночью, например. Или когда разделителем вместо запятой становится точка…

Выводятся при этом только данные за последние несколько часов, так что если ошибка не исправляется в течение длительного периода, ничего страшного не случится — банк просто выпадет из рейтинга.

Но в какой-то момент один из клерков «Регионального Банка Развития» пошутил еще смешнее, установив курсы покупки и продажи доллара больше подходящие для евро: 42.70 / 43.30, для американской валюты значения на тот момент ну никак не должны были превышать 31 рубля.

Решение пришло в голову только одно: надо сравнивать курс в банке с курсом ЦБ. И если имеется расхождение больше, чем на 5 — 10%, то считать эти данные ошибкой, в рейтинг не включать, а присылать мне письмо, дабы разобрался. Только вот лишний раз обращаться к базе данных не хотелось.

И тут меня осенило: можно же писать данные в файл, а его подключить-то проще простого. Так я еще и узнал, что в Perl’е такого простого способа подключения файлов как в PHP не существует. В PHP написал <? include «database.config» ?>, и все содержимое файла database.config как-будто и было прописано в этом месте. А в Perl’е есть, конечно, функции do и require, только вот работают не совсем так, как хотелось.

Ну ничего, зато научился полноценно работать с файлами. А то за несколько лет админства некоторое количество скриптов написать довелось, но с файлами никогда не работал, все больше с базами данных. 🙂

А в самом сервисе сравнения курсов валют еще пара недоделок осталась:

  • Во-первых, надо будет убрать секунды из даты и времени обновления курса на страницах банков. Явно эта информация избыточна.
  • Во-вторых, наверное придется поискать и скрипты для кеширования. Каждый раз дергать несколько значений из базы не очень хорошо.
  • В-третьих, обновляться значения курсов валют будут ежечасно (ночью может и пореже).

Но и то, и другое, и третье после достижения 200 — 300 посетителей в сутки. Тогда устранение первого бага можно будет совместить с добавлением рекламы. 🙂

А в остальном вроде бы все работает вполне корректно. Пожелания и соверты принимаются. 🙂


Заметки по теме:

комментария 4

  1. Антон Молодой (16 ноября 2009, 18:30)
  2. >Каждый раз дергать несколько значений из базы не очень хорошо.
    абсолютно нормально.
    если бы ты каждый раз с сайтов банков дергал — тогда да 🙂 а БД для этого и создана.

  3. Владимир Лапшин (16 ноября 2009, 18:36)
  4. Я понимаю для чего создана БД. 🙂 Но тем не менее лучше всего раздавать статику. И чем меньше запросов к БД тем лучше.
    Блокировки на хостингах за превышение нагрузки не самая приятная штука. 🙂

  5. Антон Молодой (16 ноября 2009, 19:44)
  6. Сколько запросов на страницу? Если 5-10 простых запросов, то это более чем нормально. Особенно, если они однотипные MySql же тоже кеширует 😉

  7. Владимир Лапшин (16 ноября 2009, 20:04)
  8. Ты прав, о кеше MySQL я не подумал. 🙂 Моих запросов там 6 штук на главной. Простеньких.
    Ну плюс вагон и маленькая тележка от WordPress’а. 🙂

Напишите комментарий