HTTP, bir nedenle vatansız bir protokoldür. Oturumların durumu HTTP'ye kaynaklanır. Genel bir kural olarak, oturum durumunu kullanmaktan kaçının.
GÜNCELLEME: HTTP düzeyinde bir oturum kavramı yoktur; sunucular bunu istemciye benzersiz bir kimlik vererek ve istemciye her istekte yeniden göndermesini söyleyerek sağlar. Daha sonra sunucu bu kimliği, Session nesnelerinin büyük bir hashtable'ının anahtarı olarak kullanır. Sunucu her istek aldığında, oturum bilgisini istemcinin istekle birlikte gönderdiği kimliğe dayalı olarak oturum nesnelerine hashtable'tan arar. Tüm bu ekstra işler ölçeklenebilirlik konusunda çift yönlü bir iştir (HTTP'nin vatansız olmasının büyük bir nedeni).
- Whammy One: Tek bir sunucunun yapabileceği işi azaltır.
- Whammy Two: Ölçeklendirmeyi zorlaştırıyor çünkü artık herhangi bir eski sunucuya bir istek yönlendiremezsiniz - hepsinin aynı oturumu yoktur. Belirli bir oturum kimliğine sahip tüm istekleri aynı sunucuya sabitleyebilirsiniz. Bu kolay değil ve tek bir hata noktası (bir bütün olarak sistem için değil, kullanıcılarınızın büyük parçaları için). Ya da oturum depolamasını kümedeki tüm sunucular arasında paylaşabilirsiniz, ancak artık daha karmaşık bir duruma sahipsiniz: ağa bağlı bellek, bağımsız bir oturum sunucusu vb.
Tüm bunlar göz önüne alındığında, oturuma ne kadar çok bilgi koyarsanız, performans üzerindeki etkisi o kadar büyük olur (Vinko'nun işaret ettiği gibi). Ayrıca Vinko'nun belirttiği gibi, nesneniz serileştirilemezse, oturum yanlış davranacaktır. Bu nedenle, genel bir kural olarak, oturumda kesinlikle gerekli olandan daha fazlasını koymaktan kaçının.
@Vinko Genellikle izlediğiniz verileri geri gönderdiğiniz yanıta gömerek ve istemcinin yeniden göndermesini sağlayarak, örneğin verileri gizli bir girişe göndererek sunucu deposu durumuna sahip olmak için çalışabilirsiniz. Gerçekten sunucu tarafı durum izlemeye ihtiyacınız varsa , muhtemelen destek veri deponuzda olmalıdır.
(Vinko ekler: PHP, oturum bilgilerini depolamak için bir veritabanı kullanabilir ve istemcinin verileri her seferinde yeniden göndermesi olası ölçeklenebilirlik sorunlarını çözebilir, ancak müşterinin tümünü kontrol ettiği için dikkat etmeniz gereken büyük bir güvenlik sorunu kutusu açar eyaletiniz)