Как основные сайты реализуют это?
Они жестко кодируют скорость или каждый раз просматривают ее?
Идея заключалась в следующем:
Я бы предположил, что они определяют приемлемый временной интервал, в котором они будут считать ставку «твердой», и только поисковые запросы, когда это истечет (будет ли это 30 минут или 6 часов, будет зависеть от вашего решения). Как вы достигнете этой цели, это может быть одна из нескольких вещей, две из которых я бы подумал:
Достаточно просто, сохраните скорость X-to-Y в таблице поиска MySQL. Вы захотите использовать движок хранения памяти (HEAP), потому что это должно быть быстрым и иметь учетную запись (потенциально) для операций DELETE по истечении срока записи (вы можете рассмотреть возможность сохранения значений в постоянной таблице для исторических целей).
Вам нужно будет внедрить процедуру сбора мусора, чтобы очистить старые записи, как только они будут надлежащим образом мертвы, и я бы рекомендовал использовать хранимую процедуру для этого, используя PHP-скрипт, чтобы дать SP 1-в-10 вероятность Бег.
EDIT: Конечно, вы можете использовать что-то другое, кроме MySQL, но я склонен рекомендовать его, хотя бы потому, что это часть общего стека разработки PHP, и довольно легко предположить, что вы его получите. И, эй, если вы этого не сделаете, мы надеемся, что в вашей РСУБД есть выбор.
Это значительно проще, так как это не требует разработки схемы базы данных, процедуры сбора мусора и т. Д., Но также не дает вам гибкости включать исторические данные как часть процесса сбора мусора, поэтому, если вы намеревались сохраните его, вам нужно будет сохранить его как историю, как только вы ее получите.
Честно говоря, это личное предпочтение. В любом случае это энергозависимые данные, поэтому их хранение в памяти – это, безусловно, путь. Если вам больше нравится MySQL, чем Memcached, или наоборот, то идите с тем, что знаете.
Зависит от того, насколько вы ожидаете этого; если только несколько человек будут использовать его в день (например, внутреннее приложение для бухгалтерии), я бы определенно проголосовал за «Lazy Loading», так как вы могли бы ограничить свои запросы только тем, что вам нужно.
В качестве альтернативы, если вы ежедневно ожидаете тысячи (или даже сотни) пользователей, то система на основе cron может быть идеальной, так как случайному пользователю не придется ждать получения данных, когда они не свежие. Однако использование системы на основе cron не должно заменять собой надлежащую систему сбора мусора (в случае, если вы используете решение, которое не поставляется с одним встроенным, например memcached), а в случае неудачи работы, приложение должно по-прежнему быть в состоянии ленивой загрузки по требованию, если данные слишком устаревают или не присутствуют .
Различные Центральные банки , например ЕЦБ , предоставляют курсы Forex бесплатно для публики.
Существует пакет PEAR для курсов Forex, а также не сложно самостоятельно его закодировать. Поскольку данные обычно обновляются ежедневно, вам нужно добавить кеширование, чтобы не забивать сервер банка.
Однако, если ваше приложение выполняет критически важное преобразование, вам следует обратиться к коммерческому сервису, поскольку они обычно обновляются чаще. Я думаю, что Yahoo и Google имеют финансовый API, а кто-то уже упоминал XE.com.
Как указывают другие ответы, вам потребуется доступ к API какого-то типа. С обменными курсами, тем не менее, гораздо большая проблема заключается в том, чтобы найти тот, который не стоит руки и ноги. Я знаю только один, XE.com . У них есть реальный веб-сервис, начинающийся с $ 540 в год, калькулятор без рекламы встраивается для веб-сайта и бесплатного встраивания или всплывающего окна с объявлениями.