Ne senaryolar içinde oldukça doğal seans daha kullanıcı oturumları için tabloları kullanmak daha iyidir?

4 Cevap php

Bu konuda ben sormak gerekiyor hepsi bu

Ben şu anda bir site ile uğraşıyorum ve ben bunu yaparken üzerinde ve bir veritabanı tablosunda benim oturumları depolama gerçekten önemli bir fark göremiyorum.

4 Cevap

Birkaç nedeni vardır ben bir DB bazen mağaza oturum verileri. İşte büyük iki şunlardır:

  1. Eğer paylaşılan bir sunucu üzerinde çalışan ediyorsanız Security Concerns on a Shared Server, şansını sunucunun diğer kullanıcıların geçici dizine kendi yolunu karışmak ve orada sakladığınız oturumu veri erişimi için kolay olduğunu vardır. Bu too yaygın değildir, ancak can olur.
  2. Eğer upscaling ve birden fazla sunucu kullanıyorsanız Using Multiple Servers, bir veritabanında oturum verilerini saklamak için en iyisidir. Bu şekilde veri (sen gidiyorsun ne kadar büyük bağlı olarak ya da çiftlik) tüm sunucu yığını boyunca kolayca kullanılabilir. Bu, düz bir dosya sistemi ile de ulaşılabilir, ancak bir veritabanı kullanarak genellikle daha zarif, kolay bir çözümdür.

I not bir veritabanı kullanarak düşünebilirsiniz tek şey sadece çalışan olacak sorgu sayısıdır. Her sayfa yük için, oturum verilerini toplamak için ekstra bir sorgu olacak. Ancak, küçük bir ekstra sorgu o kadar fark olmamalı. Yukarıda özetlenen iki nokta bu küçük maliyeti ağır basmaktadır.

Biraz yardımcı umuyoruz.

Eğer oturum dosyalarının saklandığı dizin kimlerin erişebileceğini üzerinde hiçbir kontrole sahip paylaşılan bir bilgisayar üzerinde. Bu durumda DB oturumları saklamak daha iyi güvenlik sunabilir.

And one scenario with which I have no experience myself, but I believe is a realistic scenario:
On a loadbalanced server farm where subsequent requests of one user can be dispatched over multiple servers. In this case you could choose to have one central DB server. In such a scenario, if you wouldn't have such a centralized session repository, session data of users would get lost because they could switch servers per request.

Belirli bir kullanım hep aynı sunucuya gönderilen olacağını garanti etmez bir yük dengeleme mekanizmasından ile, birkaç sunucuyu kullanırken çok büyük bir fark var:

  • kullanıcı yükü dengelenmiş önceki sayfayı hizmet olarak aynı değildir bir sunucuya eğer dosya tabanlı oturumu ile, (başka bir sunucu üzerinde olduğu gibi), oturumunu içeren dosya bulunamadı olmayacak ve o olacak onun oturum verisi yok
  • Bu oldukça durumun içinde, aslında oldukça güzel - databased tabanlı veya memcached bazlı oturumları ile, oturum verileri ne olursa olsun sunucuda hazır olacaktır.

Bu sunucunun "temporaty" dizinine (gibi / tmp) yerleştirilir eğer dosya tabanlı oturumu ile, herkes oturumları dosyaları okuyabilir, konfigürasyonuna bağlı olarak: Eğer paylaşılan bazı hosting kullanırken bir fark var sunucu. Her bir kullanıcı farklı DB ve DB kullanıcı olacak gibi DB bazlı oturumları ile, bu sorun, var değildir.

Yukarıdaki mesajlar ek olarak:

  • Veritabanı oturum (session tablo Bellek türü olduğunda) daha hızlıdır.
  • Dosya tabanlı oturumları kullanırken script sonlanana kadar, oturum dosya kilitli. Yani, kullanıcı iki sunucuda aynı zaman komut çalışma olamaz. Bir indirme sunucusu yazarken Bu, örneğin önemli. Kullanıcı komut kilitli oturum dosyası bırakarak, ona dosyayı gönderir, bir dosyayı indirir. Ve kullanıcı aynı anda dosya arşiv içeriğini göz olamaz.