30. juni 2009 - 17:13Der er
12 kommentarer og 1 løsning
Sidst online - dumt at opdatere hvert sekund?
God eftermiddag folkens..
Jeg har lavet et utroligt simpelt "script", hvor jeg har tilføjet en tabel i min brugerdatabase ved navn online, som så bliver opdateret med den aktuelle tid når brugerne er inde på sitet. Det sker blot på følgende måde:
$sql = "UPDATE min_database SET online = NOW() WHERE id=".$_SESSION["min_brugerid_session"]; $completed = mysql_query($sql);
Jeg er dog kommet i tvivl om hvorvidt det vil overbelaste serveren eller ej på den måde jeg gør det..
Online tiden bliver for hver bruger opdateret når: - Vedkommende logger ind - Vedkommende besøger siden (hvis cookies er sat fra forrige besøg) - Vedkommende klikker rundt på siden med forskellige brugerrettigheder (dvs. på stort set hele sitet)
Hvis alt går efter hensigten vil der komme en jævnt stor brugerkreds, og når de er logget ind vil databasen altså blive opdateret mere eller mindre hvert sekund for hver enkelt bruger..
Vil det belaste serveren for meget tror i?
I så fald, har i evt. et andet forslag/guide til hvordan jeg i stedet kan gøre det.. Læste en enkelt artikel herinde med nogle iframes, men syntes ikke helt den virkede så "god" igen..
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Der er ingen tvivl om at det er dyrt i ressourcer - men løsningen afhænger i høj grad af hvor præcis du vil være. Hvis værdien skal være 100% præcis er du nødt til at gøre det som nu - og kan du tåle at være lidt upræcis så opdatér tidspunktet når brugeren logger ind og besøger siden (ved cookies), herefter opdaterer du kun en session hver gang brugeren klikker rundt på siden og ved session timeout gemmer du værdien i databasen igen (og evt med et vist minut interval for lidt højere præcision).
Det er heller ikke nødvendigvis mere præcis end dit sidste forslag (men trods alt lidt fra bare at tælle op og ned, men mon ikke det bundede i at spm ikke var tolket helt korrekt) - min tanke med det gik bare lidt på, at der let kunne være noget på siden der holdt brugersessionen kunstigt i live (annonce-refresh eller lignende) og med min session-værdi blev der logget et præcist tidspunkt for brugerens sidste egentlige handling og ikke en mulig automatisk handling på siden.
Synes godt om
Slettet bruger
30. juni 2009 - 19:25#5
Arne_V: Hvis jeg tæller op når mine sessions startes er det ligeledes på hver side, så der vil i og for sig ikke være nogle forskel hvis jeg forstår dig rigtigt ;) ?
keysersoze: Det er faktisk præcis det samme som ovenover. Når brugeren klikker rundt på siden bliver online-tiden også opdateret som det ser ud nu :S Den opdaterer ikke hvis man bare "idler" på siden og ikke klikker rundt eller foretager sig noget ;)
din session starter jo ikke på hver side bare fordi du kalder session_start.
den bliver oprettet så snart brugeren kommer ind på siden og bliver vedligeholdt så længe brugeren klikker rundt på dit site, medmindre at der går længere tid imellem klikkene end session_timeout er sat til.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.