Bu nesneler veya erişim db ile php oturumları kullanmak daha iyidir?

4 Cevap php

Ben, bir kavşakta kullanmak için daha iyi ne tam olarak emin değilim. Şu anda ben anında hesaplamalar saklamak için seans dizileri kullanarak ediyorum, ama bazı işlevlere sahip istiyorum çünkü nesnelere geçmek gerekir. Ama aynı zamanda ajax kullanarak ve ileri geri veritabanına anında veri eklemek düşünüyor ama ben ağır trafic altında birçok hesaplamalara olabilir endişeliyim.

Ne yapmaya çalışıyorum bir sepeti ürün ben kullanmak için, daha iyi bir çözüm olduğu merak bir miktar alana bir değişiklik yapılırsa, sepeti tüm öğeleri yeniden hesaplanması gerekir eklenir edildi sahip olduğunu nesneler ve oturumları veya birden fazla kullanıcı verileri manipüle db büyük bir tablosunu güncelleştirmek.

Bu kararda yardımcı olur, ben mysql db kullanıyorum ..

4 Cevap

Oturumu çok daha hızlı olmalı, ancak kullanıcı tarayıcısını kapatır eğer kalıcı değildir. Ben çoğu zaman bu tür bir şey (alışveriş arabaları, son erişilen arama, vb) oturumları kullanın. Kullanıcıların bir orta ile çok sayıda sitede, eski oturumu bilgilerini temizlemek için bir masanın üzerinde bakım yapmak gerekir. Ben gerçekten daha sonra orada gün olarak verileri gerekir sürece benim için bir baş ağrısı çok fazla.

Peki oturumları kendilerini veritabanında saklanabilir unutmayın. Yani ne olursa olsun seçtiğiniz ne, kendi veritabanı tabanlı oturumları rulo denemek gerekir.

Bu standart PHP oturumları diskteki oturum verilerini saklamak da aklınızda bulundurun. Eğer çok fazla disk i / o ile kutu batağa saplanmak olabilir mümkündür üzerinde birçok oturumları ile sitenizde birçok kullanıcı var. Ancak, bir SSD sürücü olsaydı bu bir sorun daha az olurdu.

Ben daha önce kullanmış olduğunuz başka bir seçenek sadece sunucu olarak aynı kutusunda bir MySQL veritabanı ve bir hafızanın sadece tablo verileri depolamak için. Ben bu iki dünyanın en iyi olduğunu düşünüyorum:

  • It's faster than a traditional myisam or innodb database because it doesn't ever get dumped to disk (this mostly only affects session writes)

  • Assuming your database is on a different box than your web server, it's faster because your session db is on the same box.

  • You can perform some sql wizardry on your session store if you need (can't do this with files)

Ben bir OTURUM kimliği ve ilgili öğe id saklayan bir sepeti tablo oluşturun.

Session id tarama kullanıcıyı ilişkilendirmek için kullanılacak. Fiyatı hesaplanması kullanıcıların oturum kimliği ile tüm satırları almak ve (örneğin) madde tablosundan fiyatı toplanmasıyla kadar kolay olurdu. Sepete herhangi bir değişiklik basit bir ekleme içeren veya her öğe için silin.

Birçok farklı hesaplamalar yapmak için, ben oturumu ile gitmek istiyorum ... Bu gerçekten bant genişliği en samimi yoludur. Eğer çerezleri kullanmadan kendi arabası devam etmek istiyorum onlar ayrılırken, daha sonra veritabanında kendi arabası saklayabilirsiniz ve (tabii ki kullanıcı kimliği dayalı sepeti saklamak) geri gelip onu yeniden.