WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Att lagra mycket information i sessioner (https://www.wn.se/forum/showthread.php?t=23901)

Indigo 2007-09-28 14:19

Sitter och funderar på lite olika möjligheter att lagra stora mängder information som kommer att behöva parsas igenom mycket frekvent under besökarens vistelse på sidan. Informationen kommer att vara unik för varje besökare, och kanske ett par hundra kilobyte tung. Dessutom skall den fyllas på frekvent, allt medan besökaren är aktiv.

Är det smidigast att spara allt i en databas? Rent instinktivt känns det inte så, då databasen kommer vara ganska hårt ansatt ändå. En lösning jag lutar lite åt är att spara informationen i en fil, där varje registrerad besökare har en egen fil.

Vinner jag något på att vid inloggning dra över all information till en session och parsa igenom den allt eftersom det behövs? Jag måste dock fortsätta skriva den nya informationen till filen (och inte sessionen) för att inte riskera att tappa infon om besökaren skulle stänga sin läsare huxflux.

Vet inte om jag lyckas förmedla mitt problem eller hur jag tänker? Om jag mot förmodan lyckades, och DU vet hur man bäst gör, tala då gärna om det för mig :)

coredev 2007-09-28 14:48

Hej.

Några kortfattade tips på vägen..

Lägg inte för mycket data i PHP-sessionen. Din applikation blir då en mardröm att skala.
Är det mycket data så är det nog bättre att lagra som en fil (dock inte gärna XML eftersom det slöar ner i onödan).
Det låter dock som att du i detta fallet bör använda din databas istället.

Indigo 2007-09-28 16:21

Jag är inte så säker på om databas är rätt väg, eftersom den ändå kommer få jobba massa. Eller är det ineffektivt att skriva och läsa fil? Vad kräver mest kräm av servern?

WizKid 2007-09-28 16:27

I PHP så sparas ju sessionerna som filer som default. Så jag ser inte riktigt vad skillnaden skulle vara att spara informationen i en annan fil.

fors 2007-09-28 16:42

Spara det i en Memcache-server. Det är effektivt samt så är det lätt att skala, då man kan ansluta via nätverket till en Memcache-server.

coredev 2007-09-28 17:15

Citat:

Originally posted by WizKid@Sep 28 2007, 16:27
I PHP så sparas ju sessionerna som filer som default. Så jag ser inte riktigt vad skillnaden skulle vara att spara informationen i en annan fil.

Det beror lite på hur stor del av informationen du måste peta i vid varje sidladdning. Måste du peta i alla variablar så kanske session är samma som fil(er). Är det bara en del av informationen som du skall peta på, så kanske du inte behöver ladda upp hela filen / alla filer i minnet vid varje sidladdnig. Lite så tänkte jag..

jahaa 2007-09-28 21:02

Citat:

Originally posted by fors@Sep 28 2007, 16:42
Spara det i en Memcache-server. Det är effektivt samt så är det lätt att skala, då man kan ansluta via nätverket till en Memcache-server.
Agree, simpelt är det också.

Kod:


<?php

$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);

?>


danjel 2007-09-30 10:06

Eller spara i MySQL minnes(heap) tabeller..slipper i alla fall läsning mot disk

fors 2007-09-30 11:05

Citat:

Originally posted by danjel@Sep 30 2007, 09:06
Eller spara i MySQL minnes(heap) tabeller..slipper i alla fall läsning mot disk
Japp. Fast fördelen är att Memcache är snabbare i det här fallet, då man slipper parsa sql-frågan osv. Fast hur mycket det skiljer sig får man ju benchmarka om man är osäker på vilken lösning man skall välja.

danjel 2007-10-02 13:08

Hmm nja det beror ju på ...om man tex lagrar Memcache sessionerna på en annan burk(?)
Då skulle nog en mysql på samma burk som webbservern gå snabbare..


Alla tider är GMT +2. Klockan är nu 17:16.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson