webForumDet fria alternativet

Belastning: Sessioner gentemot SQL

3 svar · 388 visningar · startad av sabbacus

sabbacusMedlem sedan juli 2002630 inlägg
#1

Tjena.
Vi har haft en diskussion på jobbet idag om huruvida vi ka använda oss av sessioner eller sql i huvudsak när vi utvecklar ett kommande system. Vi ska använda både och ska nämnas men vilket ska man lägga tyngden på?

Systemet i sig är ett kund- och säljsstödssystem skrivet i php4 mot mysql4 och har flerspråksstöd såväl som modulär uppbyggnad. Givetvis är det också ett fleranvändarsystem. Varje gång en sida i systemet laddas inkluderas en eller flera moduler (den dynamiska navigationsmenyn är en modul, språkhanteringen en annan för att exemplifiera).

Såhär anser jag (något förenklat):
Vi bygger ett "load-on-demand"-system där all information, när den laddas, läggs upp i en session. Detta för att slippa att hämta den från databasen varje gång en sida laddas. Varje gång en modul laddas in i systemet fylls sessionsarrayen på med ytterligare information. Det blir mindre databasaccesser och då låg belastning på servern.

Såhär anser min kollega (även detta något förenklat):
Vi bygger ett "load-on-demand"-system där all information hämtas från databasen. Vid varje modulladdning hämtas all konfiguration för modulen (språk osv) och läggs i en session. Samtidigt raderas tidigare sessioner för att hålla sessionsvariablerna på ett minimum. Detta för att ha en låg minnesbelastning på servern.

Det är svårt att säga vad som är rätt och vad som är fel då båda sidor har sina för- och nackdelar. Är det någon som har studerat det här och har koll på vilket av de två sätten som är bättre än det andra?
Självfallet är hårdvaran en viktig bit i denna ekvation, men den diskusisonen tar vi en annan gång =)

JosefMedlem sedan mars 20023 561 inlägg
#2

Jag skulle använda din kollegas variant. :e

Jag har aldrig varit speciellt positivt inställd till sessions för sådana syften.
Nu vet ju inte jag hur många samtidiga använda ni väntar, men jag tror att det både blir lättare och bättre och kanske tom snabbare att bygga allting kring ständig access till databasen. Men det är ju bara min amatörmässiga bedömning.

emissionMedlem sedan dec. 19996 721 inlägg
#3

Minnesbelastningen är inget problem med sessions, eftersom de inte (om servern är standardkonfigurerad) lagras i minnet utan i filer. Vill ni kan ni också låta PHP lagra sessionsdata i en databas (session_set_save_handler), och då får ju ni rätt båda två :)

Ni ska dock inte använda session som ett temporärt lagringsutrymme för något som ni hämtar någon annanstans ifrån. Det ger bara en massa overhead.

HansenMedlem sedan aug. 2000374 inlägg
#4

Om inte datan är unik för en specifik användare så är det ingen idé med mellanlagra den i en session.

En Mmap cache är lämplig för en box och Memcached i en klustrad miljö.

Cache
Memcached
Mmap
Alternative PHP Cache
Berkeley DB

128 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)