PHP döviz kuru uygulamak nasıl?

4 Cevap php

Nasıl büyük siteler bu uyguluyor?

Onlar oranını kodlamalısınız veya her zaman onu aramak mı?

4 Cevap

Bir fikir olacaktır:

  • to call some external API regularly, to always have some fresh exchange rate (I don't know how often this can change -- but looking the rate up once every couple of minutes should do)
    • Bu independantly bu döviz kurunu kullanan web-uygulaması, cron işi çeşit yoluyla yapılabilir
  • and to keep the exchange rate in cache for a couple of minutes :
    • bu yüzden çok sık dış API demiyorlar
    • ve ona güvenmeyin çok fazla (i.e. your site will still work if the site you're fetching the rate from is down for a couple of minutes -- and if it takes time to fetch that data, it won't slow your website down, as it's fetched regularly by a cron job)

Ben onlar oranı "katı" düşünün hangi zaman kabul edilebilir bir marj tanımlamak ve (o 30 dakika veya 6 saat olsun senin kararına bağlı olacaktır) dolduğunda sadece aramalarını yapmak hayal olur. Eğer başarmak nasıl bu hedefe çeşitli şeylerden biri olabilir, iki iyi bence hangi vardır:

Store the rate, and time of lookup, in MySQL

Oldukça basit bir MySQL arama tablosunda X-to-Y oranını saklayın. Bir kayıt (eğer tarihsel amaçlar için kalıcı bir tablo değerleri saklamak düşünebilirsiniz) süresi dolduktan sonra bu DELETE işlemleri için hızlı ve hesap (potansiyel olarak) olması gerekir çünkü Memory (HEAP) Storage Engine kullanmak isteyeceksiniz.

Sen düzgün ölü kez eski girdileri temizlemek için çöp toplama rutin uygulamak gerekir, ve SP bir 1-in-10 şans vermek için bir PHP komut dosyası kullanarak ederken, bunun için bir saklı yordam kullanarak tavsiye ederim çalışıyor.

EDIT: Tabii ki MySQL dışında bir şey kullanmak olabilir, ama eğer ortak PHP geliştirme yığının parçası çünkü sadece tavsiye eğilimindedir, ve o bunu olacak varsaymak oldukça kolaydır. Eğer yoksa Ve, hey, umarım choise RDBMS'niz bazı eşdeğeri yoktur.

Store the rate in a memory cacheing system (e.g. memcached)

Bu bir veritabanı şeması, çöp toplama rutin, vb tasarım, ama aynı zamanda size çöp toplama sürecinin bir parçası olarak tarihsel verileri eklemek için esneklik vermez gerektirmez önemli ölçüde daha kolaydır, böylece amaçlanan eğer tutmak, size en kısa sürede bunu var olarak tarih olarak saklamak gerekiyordu.

Which is better?

Dürüst olmak gerekirse, bu kişisel bir tercihtir. Her iki durumda da, bu uçucu veriler, bu yüzden bellekte depolanması kesinlikle gitmek için yoludur. Eğer Memcached daha MySQL, veya tam tersi daha rahat ediyorsanız, o zaman ne biliyorsun git.

Cron-based loading or Lazy-loading?

Bu olmasını beklemek ne kadar meşgul bağlıdır; sadece birkaç kişi (örneğin bir muhasebe departmanı, iç app) günde kullanmak eğer o zaman ihtiyacınız olan şey, isteklerinizi sınırlamak olabilir çünkü o zaman ben kesinlikle "Lazy Loading" için oy istiyorum.

Eğer günlük kullanıcı (hatta yüzlerce) binlerce düşünüyorsanız zaman kullanıcı taze olmadığı zaman veri getirilecek için beklemek zorunda kalmazsınız Alternatif olarak, daha sonra bir cron tabanlı bir sistem ideal olabilir. Using a cron-based system, however, should not be a substitute for having a proper Garbage Collection system (eğer memcached gibi, yerleşik biri ile gelmiyor bir çözüm kullanıyorsanız), ve iş başarısızlık durumunda, the application should still be capable of lazy-loading on demand if the data is too stale or not present.

Halka serbest çeşitli Central Banks, örneğin, ECB, temin Forex oranları.

Orada bir PEAR package for Forex Rates ve buna kendiniz kodlamak için de zor değildir. Veriler genellikle bir günlük olarak güncellenmektedir olduğundan, bankanın sunucu çekiç şekilde değil, önbelleğe eklemek isteyeceksiniz.

Uygulama her zaman kritik dönüşüm yapıyor ise, bu genellikle daha sık güncellemek gibi Ancak, ticari bir hizmet için başvurmak gerekir. Ben Yahoo ve Google mali API ve zaten XE.com bahsedilen birisi olduğunu düşünüyorum.

Diğer cevaplar işaret ederken, bazı tür bir API erişimi gerekir. Döviz kurları ile olsa da, çok daha büyük bir sorun, bir kol ve bir bacak mal olmaz bir bulgu olacak. Biliyorum tek, XE.com. Bunlar reklam-az hesap web sitesi ve reklam odaklı serbest embed veya açılır pencere için gömer, $ 540/year başlayan gerçek bir web hizmeti var.