Her zaman db PHP OTURUMU veya sorguda önbellek veri?

3 Cevap php

, Bu "daha iyi" (daha verimli, daha hızlı, daha güvenli, vb) $ _SESSION dizi her sayfa yük üzerinde kullanılan (ama hala taze verileri yeniden bir bayrak için bir tablo sorgulama) (A) önbellek verilerine mı veya (B) veritabanından her zaman yüklemek için?

Ben önbellek yöntemi (A) kullanıyorum, ama ben yüzlerce kullanıcı ile, hafıza bir sorun haline gelebilir endişeliyim? Vb Ad, Soyadı, doğum günü gibi sadece basit veri bulunuyor

Her iki yöntemde, bir sorgu varlık çalışma hala var. Düşünceler?

3 Cevap

Veri her sayfalarda kullanılan ve tüm kullanıcılar için aynı ise, ben (her kullanıcı için farklı bir veri kopyasını sahip anlamına gelir) $ _SESSION bunu önbelleğe olmaz, ama başka mekanizmasından ile, gibi:

  • dosya
  • Örneğin APC ile bellek, (eğer 1 sadece sunucu)
  • Bellekte, memcached, örneğin (çeşitli sunucuları varsa)
  • Veri veritabanında önbelleğe alma, elde edilecek uzun hesaplamalar veya birkaç DB sorguları gerektiriyorsa (geri almak için sadece 1 sorgu demek ve daha az hesaplamalar olurdu) başka bir olasılık olabilir


If your data is not the same for each user (which seems to be the case in your situation, as you are caching names, birthdates, ...) :

  • Eminim sadece gerekli olanı önbelleğe yapacak
  • Yalnızca önbelleğe birkaç veri var, oturumda koyarak oldukça Tamam olmalıdır
  • Eğer gerçekten birçok kullanıcı, muhtemelen diğer bazı ölçeklenebilirlik sorunları gerekir, ve büyük olasılıkla zaten memcached gibi bir şey kullanmak için gelecek varsa; hangi önbelleğe diğer bazı yol var olacak demektir ;-)

Bir dipnot düşmek gibi: Eğer tekrar tekrar aynı sorgu yapıyorsun, DB sunucu (MySQL için, bu "query cache" içine gider) kendisi tarafından önbelleğe; bu nedenle, düşündüğünüz kadar kötü olmazdı, herhalde - o kadar optimize edilmemiş bile ^ ^

Bu oturum işleyicisi ne olduğunuzu bağlıdır. Sizin oturum işleyicisi MySQL olabilir ve böylece soru daha iyi olduğunu olmaz, ancak oturum yönetimini optimize etmek için nasıl.

Varsayılan PHP oturum işleyicisi dosyaları, ama oldukça kolay mysql değiştirilebilir.

Olmayan kullanıcı, belirli verileri bahsediyoruz, o zaman sadece DB kaydedin. Daha sonra sorun haline çalıştırırsanız optimize endişe. Daha sonra elden önce optimize hakkında düşünme daha iyi bir tasarım deseni kullanmak genellikle çok daha faydalıdır. Kolayca depolama için farklı bir işleyici kullanabilir ve daha sonra sorunları optimize olmayacaktır böylece kodunuzu tasarlayın.

Bu kullanıcıya özel ise, oturumu kullanın, ancak gerekirse uygun bir oturum işleyicisi kullanın.

Sonuçta, hem kod ve bunu test etmek gerekir. Dahil pek çok faktör vardır, ya bir yol gor ki; Sadece hassas ortam emin söyleyebilirim.