Intereting Posts
Мой скрипт PayPal неожиданно прекратил проверку SSL-сертификата amazon s3 – загрузка изображений вместо отображения в браузере Приложение Facebook iframe после перенаправления авторизации на вкладку страницы facebook PHP mcrypt_decrypt – могу ли я определить, расшифровывается ли информация с помощью правой клавиши? SQL ORDER BY с использованием подготовленных операторов Laravel – путь к экземпляру UploadedFile Что самое легкое в использовании рамки ORM для PHP? Как отформатировать дату в PHP без двоеточия в смещении? Как добавить к этому обновлению инструкцию SQL и сделать выпадающий список тоже для нее Общий объем данных MySQL? Как хранить пароль пользователя LDAP пользователя в файле cookie? Преобразование даты Великобритании в США в PHP с помощью другого разделителя Снять конкретные слова из строки Поиск вложенных массивов PHP Как сохранить дату UTC ISO8601 в базе данных MySQL?

Как реализовать обменный курс в PHP?

Как основные сайты реализуют это?

Они жестко кодируют скорость или каждый раз просматривают ее?

Solutions Collecting From Web of "Как реализовать обменный курс в PHP?"

Идея заключалась в следующем:

  • регулярно называть некоторые внешние API, чтобы всегда иметь свежий обменный курс (я не знаю, как часто это может измениться), но, глядя на скорость, раз каждые пару минут должен делать)
    • Это можно сделать с помощью своего рода работы cron, независимо от вашего веб-приложения, использующего этот обменный курс
  • и сохранить обменный курс в кеше на пару минут:
    • поэтому вы не слишком часто вызываете внешний API
    • и не полагайтесь на него слишком много (т. е. ваш сайт будет работать, если сайт, на который вы извлекаете ставку, сокращается на пару минут – и если потребуется время для извлечения этих данных, это не замедлит ваш сайт вниз, так как он регулярно загружается на работу cron)

Я бы предположил, что они определяют приемлемый временной интервал, в котором они будут считать ставку «твердой», и только поисковые запросы, когда это истечет (будет ли это 30 минут или 6 часов, будет зависеть от вашего решения). Как вы достигнете этой цели, это может быть одна из нескольких вещей, две из которых я бы подумал:

Сохраняйте скорость и время поиска в MySQL.

Достаточно просто, сохраните скорость X-to-Y в таблице поиска MySQL. Вы захотите использовать движок хранения памяти (HEAP), потому что это должно быть быстрым и иметь учетную запись (потенциально) для операций DELETE по истечении срока записи (вы можете рассмотреть возможность сохранения значений в постоянной таблице для исторических целей).

Вам нужно будет внедрить процедуру сбора мусора, чтобы очистить старые записи, как только они будут надлежащим образом мертвы, и я бы рекомендовал использовать хранимую процедуру для этого, используя PHP-скрипт, чтобы дать SP 1-в-10 вероятность Бег.

EDIT: Конечно, вы можете использовать что-то другое, кроме MySQL, но я склонен рекомендовать его, хотя бы потому, что это часть общего стека разработки PHP, и довольно легко предположить, что вы его получите. И, эй, если вы этого не сделаете, мы надеемся, что в вашей РСУБД есть выбор.

Сохраняйте скорость в системе кэширования памяти (например, memcached)

Это значительно проще, так как это не требует разработки схемы базы данных, процедуры сбора мусора и т. Д., Но также не дает вам гибкости включать исторические данные как часть процесса сбора мусора, поэтому, если вы намеревались сохраните его, вам нужно будет сохранить его как историю, как только вы ее получите.

Что лучше?

Честно говоря, это личное предпочтение. В любом случае это энергозависимые данные, поэтому их хранение в памяти – это, безусловно, путь. Если вам больше нравится MySQL, чем Memcached, или наоборот, то идите с тем, что знаете.

Нагрузка на основе Cron или Lazy-loading?

Зависит от того, насколько вы ожидаете этого; если только несколько человек будут использовать его в день (например, внутреннее приложение для бухгалтерии), я бы определенно проголосовал за «Lazy Loading», так как вы могли бы ограничить свои запросы только тем, что вам нужно.

В качестве альтернативы, если вы ежедневно ожидаете тысячи (или даже сотни) пользователей, то система на основе cron может быть идеальной, так как случайному пользователю не придется ждать получения данных, когда они не свежие. Однако использование системы на основе cron не должно заменять собой надлежащую систему сбора мусора (в случае, если вы используете решение, которое не поставляется с одним встроенным, например memcached), а в случае неудачи работы, приложение должно по-прежнему быть в состоянии ленивой загрузки по требованию, если данные слишком устаревают или не присутствуют .

Различные Центральные банки , например ЕЦБ , предоставляют курсы Forex бесплатно для публики.

Существует пакет PEAR для курсов Forex, а также не сложно самостоятельно его закодировать. Поскольку данные обычно обновляются ежедневно, вам нужно добавить кеширование, чтобы не забивать сервер банка.

Однако, если ваше приложение выполняет критически важное преобразование, вам следует обратиться к коммерческому сервису, поскольку они обычно обновляются чаще. Я думаю, что Yahoo и Google имеют финансовый API, а кто-то уже упоминал XE.com.

Как указывают другие ответы, вам потребуется доступ к API какого-то типа. С обменными курсами, тем не менее, гораздо большая проблема заключается в том, чтобы найти тот, который не стоит руки и ноги. Я знаю только один, XE.com . У них есть реальный веб-сервис, начинающийся с $ 540 в год, калькулятор без рекламы встраивается для веб-сайта и бесплатного встраивания или всплывающего окна с объявлениями.