Я почти с самого начала столкнулся с тем, что вывод данных о курсе валют на сайте банка может неожиданно поменяться. Или вовсе исчезнуть. Поэтому данные в сервисе обновляются только если значение переменной с курсом больше ноля. Это спасает в тех случаях, когда банк не публикует данные в выходные и ночью, например. Или когда разделителем вместо запятой становится точка…
Выводятся при этом только данные за последние несколько часов, так что если ошибка не исправляется в течение длительного периода, ничего страшного не случится — банк просто выпадет из рейтинга.
Но в какой-то момент один из клерков «Регионального Банка Развития» пошутил еще смешнее, установив курсы покупки и продажи доллара больше подходящие для евро: 42.70 / 43.30, для американской валюты значения на тот момент ну никак не должны были превышать 31 рубля.
Решение пришло в голову только одно: надо сравнивать курс в банке с курсом ЦБ. И если имеется расхождение больше, чем на 5 — 10%, то считать эти данные ошибкой, в рейтинг не включать, а присылать мне письмо, дабы разобрался. Только вот лишний раз обращаться к базе данных не хотелось.
И тут меня осенило: можно же писать данные в файл, а его подключить-то проще простого. Так я еще и узнал, что в Perl’е такого простого способа подключения файлов как в PHP не существует. В PHP написал <? include «database.config» ?>, и все содержимое файла database.config как-будто и было прописано в этом месте. А в Perl’е есть, конечно, функции do и require, только вот работают не совсем так, как хотелось.
Ну ничего, зато научился полноценно работать с файлами. А то за несколько лет админства некоторое количество скриптов написать довелось, но с файлами никогда не работал, все больше с базами данных. 🙂
А в самом сервисе сравнения курсов валют еще пара недоделок осталась:
- Во-первых, надо будет убрать секунды из даты и времени обновления курса на страницах банков. Явно эта информация избыточна.
- Во-вторых, наверное придется поискать и скрипты для кеширования. Каждый раз дергать несколько значений из базы не очень хорошо.
- В-третьих, обновляться значения курсов валют будут ежечасно (ночью может и пореже).
Но и то, и другое, и третье после достижения 200 — 300 посетителей в сутки. Тогда устранение первого бага можно будет совместить с добавлением рекламы. 🙂
А в остальном вроде бы все работает вполне корректно. Пожелания и соверты принимаются. 🙂
>Каждый раз дергать несколько значений из базы не очень хорошо.
абсолютно нормально.
если бы ты каждый раз с сайтов банков дергал — тогда да 🙂 а БД для этого и создана.
Я понимаю для чего создана БД. 🙂 Но тем не менее лучше всего раздавать статику. И чем меньше запросов к БД тем лучше.
Блокировки на хостингах за превышение нагрузки не самая приятная штука. 🙂
Сколько запросов на страницу? Если 5-10 простых запросов, то это более чем нормально. Особенно, если они однотипные MySql же тоже кеширует 😉
Ты прав, о кеше MySQL я не подумал. 🙂 Моих запросов там 6 штук на главной. Простеньких.
Ну плюс вагон и маленькая тележка от WordPress’а. 🙂