O bir oturum değişkeni almak için daha, bir kullanıcının çerez almak ve bir PHP değişkeni olarak değerini almak için yavaş mı?
Bir oturumu başlatılıyor minör yükü biraz orada olurdu No saf teknik açısından bu, büyük olasılıkla tersidir.
Cookie verileri ne olursa olsun HTTP isteğinin parçası olarak gelir, ve PHP varsayılan $ _COOKIE içine okur. Bu yüzden her zaman orada olacak. $ _SESSION Bir noktada session_start()
aramak gerekir.
Ancak, ikisi arasındaki performans farkı gülünç küçük ve endişesi değmez olacak.
Genel olarak, bir oturum değişkeni alma hızı veya bir cookie endişe edilmemelidir.
Ancak aralarındaki farklılıkların farkında olmalıdır:
Oturumlar müşterileri onlar hakkında saklamak bilgilere erişimi yok demektir, sunucu üzerinde saklanır. Oturum veriler, sunucuda depolanan, her sayfada tam olarak iletilecek gerekmez; müşteriler sadece bir kimlik göndermek gerekiyor ve veri sunucudan yüklenir.
Öte yandan, Çerezler istemci üzerinde saklanır. Onlar uzun süre dayanıklı yapılabilir ve web sunucuları kümesi olduğunda daha sorunsuz çalışması için izin verecek. Ancak Sessions aksine, Cookies saklanan veriler her sayfa isteği ile tam olarak iletilir.
Bir oturum böylece endişe aslında hayır yapar zaten phpsessionid
(sunucu istemci tanımlamak ve sunucunun belleğinde oturumları biriyle ilişkilendirmek mümkün olduğu kadar) adı ile bir cookie tarafından desteklenen varsayılan olarak duygusu.
Bunun yerine "özel bir cookie" ile yeniden icat $_SESSION
faydalanmak için sadece daha kolay bulunuyor.
Kod manipülasyon açısından kabaca eşdeğer iken, çerezler ve oturum değişkenleri çok farklı şeylerdir.
Çerezler tarayıcınızda saklanan ve her isteği ile web sunucusuna iletilir. Eğer kullanıcının tarayıcısında büyük çerezleri veya küçük olanlar çok depolamak, her (bant genişliği) daha pahalı vurmak ve (zaman) yavaş yapar her istek / yanıt, boyutunu artırır. Ayrıca, bir çerez saklanan bir şey bu yüzden orada hassas bir şey saklamak önlemek, müşteriye görülebilir.
Oturum değişkenler, diğer taraftan, sorunların kendi setleri var. Onlar sunucu kapsamında saklanan konum beri, onlar kümelenmiş sunucular arasında yaymak değil. Sunucu / hizmet sıfırlar veya kullanıcının oturumu zaman aşımına, oturumda depolanan ne varsa [] toplama kaybolur. Bir oturum değişkeni büyük veri saklama trafik bir sürü varsa gerçekten kötü alabilirsiniz, hangi sunucu üzerinde bir performans ceza doğurur. Oturum değişkenleri sunucusu kullanıcının oturumu tanımlamak için kullandığı bir çerez gerektirir. Oturum kimlikleri, saçma sahte kimlikleri randomize beri bu değerin her türlü ile yapmak oldukça şeyttirdiğimin zor olurdu ama bu, diğer oturumlarda saklanan verilere erişmek için kendi çerez değiştirmek için bir kullanıcı için mümkündür.
Sonuçta, bu bok hepsi zaten bir veritabanında saklanmalıdır. Oturumları herhangi bir sağlam uygulama geliştirirken kaçınılmalıdır tembel bir kolaylık vardır. Çerezler minimal kullanılmalıdır - genellikle, ben saklamak bir bana bir (bir SessionID çerez benzer, ancak uygulamaya özel) kullanıcıyı tanımlamak yardımcı olur, ama her şey veritabanında gider bir tanımlama guid. Bu size sunucu-agnostik veri kullanılabilirliği, güvenli depolama, vb app yerine sunucu geneli, iyi sorgu ve rapor yeteneği tarafından belirlenen veriler ömür verir
Doğru yapıldığında Veritabanları kolaydır. Topladığınız durumu bilgileri bir veritabanında saklanmalıdır pek çok nedeni ve hiçbir iyi neden not için vardır.