Online Brugere

Tags:    php

<< < 123 > >>
Hey, jeg har det er bruger script, der funker helt fint.
Det Gemmer en session når du ligger ind, og så sletter den igen når du logger ud. Helt simpelt.
Men, nu vil jeg så gerne lave så man kan se hvem der er online.. Men jeg har VIRKELIG ingen anelse om hvordan F***** jeg skal lave det xD
Håber en kan hjælpe mig med dette :D



En måde at gøre det på er at sætte et timestamp i en session når brugeren logger ind.

Når brugeren navigerer rundt på siden, har du et script som tjekker om det timestamp brugeren har er mere end 5-10 minutter gammelt. Hvis det er, betyder det at brugeren er inaktiv på siden og så sætter du hans online status (i databasen) til 0 eller hvilken værdi du nu bruger som offline.

Hvis hans timestamp ikke er 'for gammelt' opdaterer du hans timestamp.

Ved ikke om det hjalp på forvirringen? :o)


Problemet med et timestamp i session er, at serveren jo ikke bare automatisk tjekker det timestamp efter han er inaktiv?



Simon Smith.

Det var meget morsomt vi havde samme ide til problemet :)


Hehe, det kunne jo tyde på at det er en brugbar, men ressourcekrævende løsning ;)



Ja nemlig men jeg kender ikke så meget til Javascript men der er vel sikkert en ide til det også hvor den ser når brugeren går væk fra hjemmesiden så kan den lige opdatere online til 0 ?



Ja nemlig men jeg kender ikke så meget til Javascript men der er vel sikkert en ide til det også hvor den ser når brugeren går væk fra hjemmesiden så kan den lige opdatere online til 0 ?


Tja, men hvis du blander javascript og php på den måde, risikerer du også et værre rod.

Javascript kan tjekke når du lukker et window, men det er ikke stabilt nok til at jeg ville bruge det ;)

Som sagt er der i ASP en måde hvor man kan sætte application sessions, så man på serveren kan holde styr på online brugere, uden et helvede af sessions og database forbindelser ;)

Ved ikke om der findes noget lignende til php.



En måde at gøre det på er at sætte et timestamp i en session når brugeren logger ind.

Når brugeren navigerer rundt på siden, har du et script som tjekker om det timestamp brugeren har er mere end 5-10 minutter gammelt. Hvis det er, betyder det at brugeren er inaktiv på siden og så sætter du hans online status (i databasen) til 0 eller hvilken værdi du nu bruger som offline.

Hvis hans timestamp ikke er 'for gammelt' opdaterer du hans timestamp.

Ved ikke om det hjalp på forvirringen? :o)


Problemet med et timestamp i session er, at serveren jo ikke bare automatisk tjekker det timestamp efter han er inaktiv?


Hovsa, det har du ret i! Havde en helt anden løsning i hovedet da jeg skrev det :-)

Gem det i databasen! Da det giver dig mulighed for at sætte alle brugere hvis timestamp er ældre end 5-10 minutter offline. Som der er allerede er blevet sagt så skal det lige gemmes i en kolonne i databasen først.

Min fejl, havde ikke forstået spørgsmålet korrekt.



Ja nemlig men jeg kender ikke så meget til Javascript men der er vel sikkert en ide til det også hvor den ser når brugeren går væk fra hjemmesiden så kan den lige opdatere online til 0 ?


Tja, men hvis du blander javascript og php på den måde, risikerer du også et værre rod.

Javascript kan tjekke når du lukker et window, men det er ikke stabilt nok til at jeg ville bruge det ;)

Som sagt er der i ASP en måde hvor man kan sætte application sessions, så man på serveren kan holde styr på online brugere, uden et helvede af sessions og database forbindelser ;)

Ved ikke om der findes noget lignende til php.


Ahh okay, ja jeg har ikke meget forstand på Javascript :)



Jeg har heller ikke så meget forstand på php, men har en rimelig idé om hvordan programmering/kodning/scripting virker sådan generelt :)

ASP er nok min stærkeste side når det kommer til serverside sprog, og ellers er jeg rimelig stærk i html, css og specielt javascript/jquery også ;)



Siden hvornår er det blevet svært resourcekrævende at opdatere en enkelt kolonne i en enkelt række?
At opdatere et tidsstempel for et antal brugere er nok det mindste problem af alle de flaskehalse der kan opstå.

Sikke da en gang skvadder.. :)



Indlæg senest redigeret d. 03.02.2010 22:00 af Bruger #10216
Siden hvornår er det blevet svært resourcekrævende at opdatere en enkelt kolonne i en enkelt række?
At opdatere et tidsstempel for et antal brugere er nok det mindste problem af alle de flaskehalse der kan opstå.

Sikke da en gang skvadder.. :)


Hvis du har en side med 50.000 online, der på skift klikker rundt på siden, bliver det hurtigt utroligt mange *EKSTRA* opdateringer i databasen i forhold til hvad der ellers er på siden.

Derudover kan jeg godt følge dig i at det nok aldrig vil være det største problem, men det jeg ville ind på var lidt, at der da må findes en bedre løsning?



Det er stadig ikke en flaskehals. Dit antal er reelt nok. Men som du selv skriver så er det mange opdateringer. Men modsat af hvad du skriver, så er det rigtig langt fra hvad der ellers kan ske og sker på en webside.
Hvad gør man med statistik? Der er endnu flere skrivninger til databasen og endnu større datamængde end blot et tidsstempel.
I øvrigt kan den fornødne algoritme samles på fire funktioner og en SQL-query :).

Der er de samme løsninger som på en .NET/ASP maskine. Læse database eller læse et alm. filsystem. Vælger du databasen, kan du gemme alt sessions-data i basen, sammen med det påkrævede tidsstempel. Skal du så have antal sessioner, læser du antallet af rækker. Vælger du filsystemet, kan du læse antallet af sessions filer der ligger på serveren (er dog kun muligt hvis du har adgang til hele serveren og ikke kun det lukkede webmiljø).



Indlæg senest redigeret d. 03.02.2010 22:49 af Bruger #10216
<< < 123 > >>
t