Birden çok ana bir PHP sitesi için oturumları işlemek için en iyi yolu nedir?

4 Cevap php

PHP bu oturumu kurulması sunucunun ana dosya sistemi üzerinde oturum bilgilerini saklar. (Tesadüfen isteği aynı ana atanmadıkça - biz yük dengeleyici üzerinde hiçbir kontrole sahip varsayalım) yük inintelligemment her ev sahibi arasında dağıtılan bir çoklu-host PHP ortamında, PHP oturum değişkenleri her istek için geçerli değildir .

This site, dubbed "The Hitchhikers Guide to PHP Load Balancing" PHPs oturum işleyicisi geçersiz kılma ve paylaşılan veritabanında oturum bilgilerini depolamak göstermektedir.

Lütfen düşünceme ne, bir çok PHP ana bilgisayar ortamında oturum bilgilerini korumak için best yoldur?

Büyük geribildirim için UPDATE: Teşekkürler. Örnek kod arayanlar için, biz dışarı atmanızı öneririz bir useful tutorial on writing a Session Manager class for MySQL hangi bulundu.

4 Cevap

Veritabanı veya veritabanı + Memcache. Genellikle konuşma oturumları çok sık yazılı olmamalıdır. Sadece oturum verileri sahip db yazar bir veritabanı çözümü ile başlayın changed. Memcache bir performans geliştirmesi daha sonra ilave edilmelidir. Sen sadece birincil anahtarları arıyoruz çünkü db çözüm çok hızlı olacaktır. Db satır kilitleme, tablo kilitleme (MyISAM) olduğundan emin olun. MEMCACHE sadece taşarsa, çöküyor, ya da yeniden, kullanıcılar giriş yapmış olacak ... kötü bir fikirdir.

(Yalnızca bir sunucu veya bir 1 +1 yerine çalışma senaryosunda kullanıyor olsanız bile) Ne yaparsanız yapın, sunucuda kendisi üzerinde tutmayın. Bu bir çıkmaz üzerine koyacağım.

Ben söyleyebilirim, kullanımı Veritabanı + Memcache depolama / geri alma için, bu zerdüştlerin kavramak dışında tutacağım (ve bana şeyler Zend ile bir noktada yıkmak inanıyorum). Bile kolaylıkla MySQL ile oluyor oldukça ölçeklenebilir şeyler bırakacaktır UserID veya sessionid tarafından bölümlemek mümkün olacak beri.

(Edit: ayrıca, DB + Memcache ile giden bir comercial partiye bağlamak değil, bu ya PHP bağlamak değil - Eğer yolda için mutlu olabilir bir şey)

Bir paylaşılan db eserlerinde oturum verilerini depolamak, ama yavaş olabilir. Bu gerçekten büyük bir site ise, memcache muhtemelen daha iyi bir seçenektir.

Projenizin bütçenize bağlı olarak, aynı zamanda diğer büyük özelliklerinden bir demet ek olarak, çeşit bir CDN yaptığı gibi çalışır yapılandırılabilir oturum kümeleme da içeren üretim makineleri için Zend Platform düşünebilirsiniz.