Op zondag 02 juni 2002 13:11 schreef ACM het volgende:
Gaat het weer een beetje?

/me is immiddels al weer helemaal afgekoeld, zelfs met deze temperaturen ...1 -> zei ik toch?
2 -> zei ik toch?

Van 1 wist ik dat je dat zei, van 2 had ik dat eerlijk gezegd over het hoofd gezien.
Sja, ik zei het ook maar als een zij-note dat het niet per definitie sneller is om ram te gebruiken.
Over het algemeen is dat natuurlijk wel waar anders kan je weer opnieuw achter je ontwerptafel gaan zitten

Idd.
De app kan je dan natuurlijk schalen/tunen door de sessies in de DB of op disk op te slaan

Woah ... lijkt me een leuke om in je ap de geheugengebruik te gaan meten en run-time te gaan tunen ... kanppe vent om dat echt goed te laten werken! Da's zo eentje voor in de categorie "leuke uitdaging".

Maar aangezien php niet helemaal voor extreem grote sites bedoelt lijkt te zijn en de meeste gebruikers niet de luxe hebben van het vergroten van hun servercapaciteit EN je dat meestal doet dmv meer webservers ipv nog zwaardere kan ik me voorstellen dat je je er niet te druk om moet maken.
Geheugen-sessies kan je niet gebruiken bij een webservercluster en een doos met 4GB geheugen is echt niet zoveel sneller als 2 4 doosjes met 1GB elk (maar wel net zo duur of duurder...)
Zodra je applicatie groot genoeg is dat je je echt druk moet maken om de schaling moet je sowieso niet alleen naar je sessie's kijken maar naar vele andere punten.
En voor schaling is het dan beter en sessie-server/db te gebruiken (danwel inline met je echte db, danwel dedicated).
PHP kan absoluut voor high performance, scalable web-sites gebruikt worden. Veel grote systemen worden echter tegenwoordig gebouwd op basis van application servers die de complexiteiten die dit met zich meebrengt opvangen door een slimme architectuur, zodat de ontwikkelaar er niet zo heel veel mee bezig hoeft te houden. Als je van scratch een systeem bouwt, moet je al dit sooft afwegingen zelf maken, en daardoor wordt het bouwen een stuk minder triviaal als het anders geweest zou zijn.
Als in een systeem onderdelen van dit systeem redelijk makkelijk onder te verdelen zijn over verschillende machines, dan is dit natuurlijk de eerste stap om meer performance te krijgen. Denk daarbij aan een losse database en web server. Dit zou ik niet onder 'scalability' willen plaatsen, aangezien je op een dergelijke wijze niet onbeperkt nieuwe hardware kan blijven toevoegen om zo betere performance te krijgen.
Zodra je echter meerdere machines in een cluster krijgt die dezelfde funktie vervullen (zoals 2 webservers), wordt het al snel wat meer tricky. Scalability is dan noodzakelijk, maar zal ook over het algemeen een hoge performance penalty met zich meebrengen, en vaak het systeem complexer maken. Aan de andere kant stelt dit je wel in staat om ook high availability in te bouwen, iets wat bij dergelijke zware applicaties vaak gewenst is.
Echter, omdat een (bestaande) applicatie scalable maken zo tricky is zal men in het algemeen kiezen om de applicatie zo veel mogelijk te tunen. In-memory sessies, en aparte machines voor web- en DB-server zijn dan allebei goede stappen om het allemaal nog iets langer te rekken.
Overigens zijn hardwarekosten, zeker op x86 server technologie, zelden een groot issue in dergelijke zaken, aangezien kosten voor het aanpassen van software relatief een groter deel van het budget in beslag nemen.
Met een cluster webservers is het inderdaad sterk aan te raden om sessie handling via een centrale deamon te doen, zoals bijv. ondersteund wordt door de
Msession functiesWanneer is het onzinnig groot?
Wanneer is het onzinnig lang?

Da's een kwestie van performance testing. Gebruik daarvoor een toal als Astra Load Test, stel een aantal scenario's op, en kijk hoeveel geheugen er door de sessies gebruikt gaat worden, en of dat een probleem wordt.
Soms kan een simpel rekensommetje zelfs al helpen. Bijv. stel dat je op piektijden zo'n 50 pagina-clicks per minuut hebt. Je sessie time-out staat om 30 minuten. Dan staan er dus op die tijden gemiddeld 50 * 30 =1500 sessies open. Stel dat een sessie ongeveer 20 KB in beslag neemt, dan kost dat ongeveel 30000 KB oftwel ongeveer 30 MB. Ga daarna eens met de cijfers spelen (Stel, ik stop 3 keer zoveel gegevens in mijn sessie, wat gebeurt er dan?) en je krijgt een goed gevoel voor waar de knelpunten komen te liggen.
Overigens heb ik het gevoel dat jij waarschijnlijk 90% van mijn gelul wel weet, maar hopelijk zijn er dan andere mensen die er iets aan hebben.
Anyway, enjoy