Oturum değişkenleri

7 Cevap php

Hy çocuklar. Şu anda oturum değişkenleri depolanan çok veri kullanan bir proje üzerinde çalışıyorum. Benim soru ne kadar güvenilir bu yöntem ve sunucu performansını ve bellek kullanımını etkiler eğer. Temelde, oturum değişkenleri ve kurabiye arasında ne seçsin.

7 Cevap

Genel olarak, oturum değişkenleri kullanıcı onun / makine üzerinde yerel düzenleyemezsiniz ki aslında çok daha güvenli olacak.

Ama asıl soru dilenir, ne saklamak için arıyorsun? Biraz daha bilgi ile biz size bunu saklamak istersiniz nereye kadar daha iyi bir cevap vermek mümkün olabilir :)

Edit:

Eğer kullanıcı eylemleri saklamak için arıyorsanız, ben bir UserActions tablo veya bu satırlar boyunca bir şey inşa önerebilir. Aşağıdaki içeren bir tablo:

id INT (generic ID for the record),
timestamp TIMESTAMP/DATETIME (whatever your DB supports),
userid INT (lookup to the user table),
action VARCHAR (what action you want to record),
etc etc (whatever else you want to store)

Bir kullanıcı kaydetmek istediğiniz bir eylem gerçekleştirdiğinde, sonra yerine sadece bir oturum / çerez kullanıcı ile birlikte seyahat yapma, tablonun kendisi içine açın. Sürece onun bir "multi-adım sihirbaz" tipi uygulaması gerçekten sayfasında kendisi, kullanıcı geçmişte yapılan ne eylemleri bilmek gerekmez. Bu durumda, muhtemelen bir oturum değişkeni olarak onları geçmek için iyi olacaktır.

Sonra depolama olarak yerine session / cookie (veritabanı varlık) gerçek bir depolama bileşeni içine depolama bastırıyorlar.

Ben hala gerçekten gelişmekte olan tam olarak ne bir fikrim yok demek, ama ben yardımcı olur umarım.

Oturum değişkenleri çerezler genellikle tercih edilir. O dedi, genellikle dünya okunabilir ve dünya yazılabilir bir web sunucusu üzerinde / tmp dizininde saklanır. Eğer sunucu kontrol yok ya da paylaşılan bir ortamda çalıştırırsanız, bu fesat için zemin ıslahı olabilir. Oturum değişkenleri hassas bilgileri depolamak değil, ve çalışmak zorundadır şeyler için onlara güvenerek değil, iyi bir uygulamadır.

Eğer oturumları arasında kalıcı veri başına bir kullanıcıya ihtiyacınız varsa sadece çerezleri kullanmalısınız. Onlar oturum geçerlilik süresi siteyi outside tekrar ve orada veri gerekirse Yani, söylemektir.

Veriler sadece mevcut oturum için Aksi takdirde, eğer, o zaman devam edin ve $ _SESSION koydu. Yani orada ne.

Oturum veriler genellikle sunucu veya veritabanı dosyalarında saklanır. Peki kaç veri betiklerinizden sadece orada bağlıdır. Eğer oturumlarda büyük ikili dosyaları saklamak istiyorsanız muhtemelen hızla bellek sınırlarına ulaşacaktır.

Çerezleri verileri depolamak her zaman iyi bir fikir değildir. Bu veriler müşteriye görünür, o kolay onu değiştirebilir ve bazı durumlarda sadece bir şey mi izin vermemeliyiz.

Oturum değişkenleri kullanıcı tarafından sunulması gerekmez, onlar sadece bir oturum anahtarı dayalı yüklenir. Senin veritabanından oturumu (veya dosya sistemi, ya da bellek veya w / e) alınmasıyla maliyeti olduğundan Bellek kullanımı oturum uygulamasına bağlıdır.

her zaman sunucu (kullanılan daha fazla bellek) hakkında bilgi tutmak ve istemci makine (daha fazla bant genişliği ve daha az güvenli) kapalı olduğu bazı verilerin bastırıyor arasında bir değiş tokuş. Genel bir kural olarak, daha güvenli ve yönetmek kolay, oturumları tercih ederim.

Tüm - - Herhangi bir oturum değişkenleri kullanarak uygulama sunucuları uygun senkronizasyon ile oturum durumunu korumak için gerektiği anlamına gelir.

Oturumu veri ve senkronizasyon için çapraz sunucu çok fazla trafik demek oluyor - Her sunucu (potansiyel olarak) her oturum hakkında bilmeniz gerekiyor, çünkü bu, bir yükü vardır ve olumsuz uygulama ölçeklenebilirlik etkileyebilir.

Yalnızca bir sunucu varken, tamam.

Eğer coğrafi olarak dağıtılmış daha fazla sunucu olsun, bu daha acı olur.

Orada oturumun serileştirme / unserialisation için bazı havai olduğunu, ancak nispeten istek başına sabit olacak gibi uygulamada bu, yüksek trafik uygulamaları dolayısıyla ölçeklenebilir böyle bir sorun yok.