23. august 2003 - 17:52Der er
16 kommentarer og 1 løsning
Onlinebrugere ud fra sessions
Vores server kører med x antal sites. Når brugere besøger sites'ne, oprettes der en session. Hvis nu, jeg vil tælle antallet af onlinebrugere kun på et site, skal jeg kunne tælle antal sessions oprettet fra det ene site - og derfor skal jeg kunne identificere disse sessions på en eller anden måde.
Nogle, der har en god idé til hvordan det gøres - eller er det bare mig, der drømmer sjove drømme.....?;-)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
umiddelbart lyder det som om du drømmer sjove drømme - session er unikke for hver brugere og kan ikke deles blandt brugere. Det ikke noget der kan bruges til at tælle antal online eller på anden måde "dele" informationer flere brugere imellem - så derfor skal du gemme de aktive brugere på en anden måde... applications eller database fx
database tabel med 3 felter: tabellen er tilgængelig allevegnefra
sess char unique not null primary key, site char not null, tid timedate,
hvergang en session startes eller genoptages sørger du så for at der i databasen ligger en record med den sessions session id, og nuværende tid. hvis den findes i forvejen opdaterer du blot tiden. hvis den ikke findes opretter du den med 'nuværende site'.
din hvormange pr site bliver så til noget i retning af SELECT count(*) FROM tabellen WHERE site = 'ønsket site' AND now()-(15 minutter) < tid
Mit eksempel skal så kombineres med session_save_path(), hvis du vil have oplysninger for det enkelte site. Lav en mappe til hver site og set save-path øverst i filen.
Prøver lige at dvæle lidt ved Jakoba's forslag. Er lidt betænkelig ved at lave en db-løsning, da serveren til tider har rigeligt at lave og jeg derfor gerne vil belaste db'en så lidt som muligt, hvor det er muligt.
Så kom jeg til at tænke på, om ikke man i toppen af hver fil, kunne lægge en funktion, der går ind og opdaterer timestampet på brugerens id i db'en. I forvejen tjekkes der i toppen af hver fil, om brugeren findes..... Så får jeg både om den enkelte bruger er online ved at tage senest opdaterede tid minus 10 minutter....og ved at lave en count på bruger-db'en får jeg også antal onlinebrugere......
Detox>>Jeps - men hvis jeg skal have dem kædet sammen med brugerne og få, hvem der er online, er jeg nok nødt til at køre det ind over db'en - og ved at lave en update sammen med et tjek, om brugeren er online, får jeg en minimal belastning af db'en......
Hvis du vil vide præcis, hvem der er på ja. Det er ikke sådan jeg forstod dit spørgsmål, der skriver kun du ud fra dine session's vil finde ud af hvor mange brugere der er online på det enkelte site.
detox>>Jeps - men kom til at tænke lidt videre. Har det bedst med at være kreativ hele tiden;-) Så nej, det lagde ikke i mit oprindelige spørgsmål - men det var en mulighed, der lige pludseligt opstod......
Det virker helt kanon med en funktion i toppen af filerne, der opdaterer timestampet. Så har jeg både hvem der er online og hvor mange, der er online. Når jeg skal vise, hvem der er online, laver jeg en optælling på, hvor mange, der har en timestamp, der er nyere end 500 sekunder. Overvejer kun at opdatere timestampet hvert 3. minut - idet den jo henter timestampet i toppen af hver fil. Går jeg nu ind og siger, at hvis timestampet er fornyet inden for de seneste 3 minutter, skal den ikke opdatere, sparer jeg lidt på db-aktiviteten også.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.