Nerede ve nasıl döviz kurlarını saklamak için?

4 Cevap php

Ben dolar ile karşılaştırıldığında PayPals akım oranları gets bir senaryo yazdım her saat (benim ürün varsayılan olan para birimi).

Kullanıcı ayarlarında kendi para birimini ayarlayabilir ve bu kullanıcı tabloda deposudur.

Benim ilk düşünce daha sonra veritabanındaki tüm para birimleri oranlarını depolamak ve deposunda zaman onların oturumunda döviz kodu ve oranı kullanıcı günlükleri. Sonra her fiyat civarında ben kullanıcıların oranı ile katları fiyat ve ucunda para birimi kodunu ekler bir işlevi var.

Benim tek endişe varlık oturum değişkeni için bazen mevcut olabilir ve potansiyel fiyat tamamen yanlış yapabilir olmasıdır.

Oturumda oranlarını saklamak yerine, ben sadece kendi para birimi kodunu depolamak ve bir bellek tablo veya hızlı erişim için dosya sistemi üzerinde oranlarını depolamak ve fiyat dönüştürme işlevi erişimi bu olmalıdır? Yani fiyatları oranları gibi güncel olarak bulunmaktadır.

Bu nasıl normalde elde edilir?

4 Cevap

Yerine onlar fiyatlı konum para fiyatlarını gösterir ve gerçek oran onlar ödeme zaman değişebilir olduğunu ihtar ile kullanıcının seçilen para biriminde bir approximate fiyatı, göstermek değil mi?

Sadece PayPal Döviz Kurları alır aramaları önbelleğe. Bunu yapmak için orada hepsi. Sürece önbellek bayat değil gibi, kullanıcıların önbelleğe alınan değerler ile çarpacaktır. Önbellek bayat giderse, yeni oran getirilen, örneğin olacak (faux code)

$currency = 'usd';
if (!$cache->has("exRate-$currency")) {
    $exRate = ForEx::find($currency);
    $cache->save("exRate-$currency");
} else {
    $exRate = $cache->get("exRate-$currency");
}
CurrencyConverter::setRate($currency, $exRate);
CurrencyConverter::convert(100, 'eur', 'usd');

Önbelleklerini APC veya memcached kullanın.

Bir oturumun varsayılan ömrünü değişebilir - session.gc_maxlifetime php.ini değişkeninde depolanır. Varsayılan oturum aşağıdaki çöp toplama tarafından silinir sonra, 1440 (24 saat).

Değişken (dosya) doğrudan düzenlenebilir veya ini_set edilebilir:

ini_set('session.gc_maxlifetime', 60); // set to 1 hour

Edit

Sen çöp toplama değişkenleri session.gc_probability kullanarak ve session.gc_divisor herhangi bir çağrı üzerine çalışan olasılığını artırabilir. Belgeler http://www.php.net/manual/en/session.configuration.php yer almaktadır

Jeopardy şeyi yapmalarını sağlar.

Bu ASP'nin Application nesnesine benzer bir uygulama çapında global nesne olarak $ _SERVER kullanmak mümkün mü? Değilse, bir PHP uygulama bir nesne var mı?

Eğer öyleyse, gerektiğinde (örn. Paypal kur günceller zaman) o zaman güncelleyebilirsiniz, $ _SERVER içinde döviz oranını depolamak