mysql hız vs php session

3 Cevap php

i am working a on a permission system. In each page it will need to check whether if the user has the permission to do so. I have two choices, store the data in a session variable (which is only updated during login) or query the database for the information every time. Which is faster?

Ben izin değişiklikleri, ben oturum değişkeni güncellemeniz gerekir eğer, bu nedenle kullanıcı izni değişiklikleri "görmek" için tekrar giriş gerekiyor, ama bu sadece hız, karar bir faktör olmadığını fark etti.

3 Cevap

DB vs OTURUM hızı bir dizi faktöre bağlıdır:

  • Ne kadar veri oturum değişkeni içinde saklanır
  • Oturum değişkenleri gerçek yedekleme deposu (bu veritabanı destekli oturumları ise, temelde aynı zaman olacak) neler bulunuyor

Ben küçük miktarlarda veri için söyleyebilirim, dosya tabanlı oturum değişkenleri DB erişim daha hızlı olacaktır.

Eğer uygulamada iki yöntem arasında bir karşılaştırma ilgili elde etmek için bunu ölçmek gerekir. Ben şahsen oturumu çözümü için gitmek değil gibi böyle bir fark olacağını sanmıyorum.

Ben oturumda bilgi bu tür saklamak istiyorsunuz:

  • Bu veri geçerli kullanıcıya özgü
  • Her kullanıcı kendi veri versiyonu var
  • That kind of data is not likely to change often -- which means waiting until the session expires and the user comes back is often OK
    • , bunu sık sık değiştirmek gerekir düşünüyorsanız ve siz o son kez DB getirilen edildi "zaman" takip etmek, bu verilerin yanında, oturumda bazı damgası tutabilirsiniz Bu getirilen olmuştur ve eğer "too long ago", sadece o dakika her çift yenkimliken fecth.


I would also add that, if one day you start having several distinct web-servers, you'll be able to store the session data using memcached -- which means it scales way better than the database.

Kısa cevap: Zaten veritabanından doldurulan beri bir oturum değişkeni içinde saklanması, belki biraz daha hızlıdır. Söyleniyor, ben bir tek basit bir veritabanı sorgu hızı gerçek ölçülebilir bir şekilde çıkmaza şüphe.