Php bir memcache öğenin sona erme zamanı olsun?

3 Cevap php

Ben (30 dk aşımı süresi) sitemde tweets önbelleğe ediyorum. Cache boş olduğunda, öğrenmek için ilk kullanıcı bunu yeniden doldurmanız olacaktır.

Ancak, o zaman Twitter API 200 döndürebilir. Bu durumda ben başka bir 30 dakika önceki verileri uzatmak istiyorum. Ancak önceki veri zaten kaybolacaktır.

Peki yerine ben herhangi bir tarih kaybetmek yok ki önbelleği, diyelim ki, zaman aşımı süresi 5 dakika önce repopulating içine bakmak istiyorum.

() Olsun :: php memcache kullanırken Peki nasıl bir öğenin sona erme zamanı biliyor musunuz?

Ayrıca, bunu yapmanın daha iyi bir yolu var mı?

3 Cevap

Bu durumda, bu daha iyi mantık değil?

  • Önbellek 30 dakikadan daha eskiyse, Twitter çekmeye çalışmayın
  • Yeni veri başarıyla alındı ​​ederse önbelleği üzerine yazma
  • Zaman belirsiz bir miktar için önbellek verisi (ya da daha uzun zaten önbelleğe niyetinde daha)
  • Önbellek ayrı bir anahtarı (şimdiki zaman) güncellendi son kez not
  • Durulama, tekrar

Noktası olmak, sadece eğer varsa, eski veri otomatik olarak atılır izin vermeyin yeni bir şey ile verileri değiştirin.

Eğer memcache içine verileri koyarak - Eğer önbellek ne kadar geçerli kalacağını da belirliyor. Yani teorik ayrıca önbellek ve / veya zaman önbellek sona erecek oluşturulduğu zaman koyabilirsiniz. Daha sonra önbellekten getiriliyor sonra her zaman önbellek sona erecek ve sen ne yapmak istediğinize karar verecek kadar çok zaman sol ne doğrulayabilir.

Ama önbellek kullanıcı ziyareti üzerine yeniden yerleştirilmesi izin noktada hala riskli olabilir - Eğer erme süresinden önce ~ 5 dk ulaştığında önbelleği yeniden doldurmak istiyorsanız diyelim - ve aniden önbellek önceki son 6 dakika içinde gelen ziyaretçi yok olacaktı sonra önbelleği hala sona erecek ve kimse onu repopulated neden olacaktır - ermeden. Eğer önbellek girdisi varolduğunu her zaman emin olmak istiyorsanız - örneğin - - önbellek kontrolleri ve dolgu-up'lar yapar, bir cronjob yapma periyodik kontrolleri yapmak gerekiyor.

memcached kritik veri depolamak değil. hiçbir şey garanti.

Her zaman "son iyi" önbellek almak gerekiyorsa - Böyle veritabanı veya düz dosya gibi herhangi bir kalıcı depolama, veri saklamak gerekiyor.

hiçbir şey önbellekte bulunursa bu durumda - Eğer twitter api isteği yapmak. eğer başarısız - Eğer kalıcı veri okumak. ve başka bir http istek üzerine Eğer aynı tekrarında bir kez daha yapacak.

ya da oldukça shor ömür ile memcache içine kalıcı verileri koyabilirsiniz. Örneğin (1-5) twitter sunucuları zaman sağlıklı almak için izin için birkaç dakika. ve süresi sonrasında - isteğini tekrarlayın.