Antal timer, minutter, sekunder man ialt har været online.

Tags:    php phpmyadmin

Hej,

Nogen der ved hvordan man laver sådan at den ligger sammen med hvor mange timer, minutter, sekunder man ialt har været online i med sin bruger?.

Den skal nemlig fremstå under profilen. Men jeg ved dælme ikke lige hvordan.

Links?, andet som kan sætte mig i gang, vil være taknemmeligt ::)



5 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Altså at angive ned til minutter og sekunder kan være svært, da det kan være tricky at finde ud af hvornår en bruger er online og offline.

En hyppig måde at tjekke online-status på er, at gemme et "last seen" timestamp for en bruger i databasen. Dette opdateres hver gang en bruger bevæger sig rundt på en hjemmeside. Man laver så et tjek med dette timestamp og sammenligner med nuværende tid for at se, hvor længe siden det er, at brugeren sidst har været online. Hvis det er mere end f.eks. 5 minutter, kan brugeren angives til at være offline. Således vil det naturligvis være muligt at lave en sammentælling af hvor længe brugeren har været online alt i alt, men det vil uanset hvad kun være et estimat.

Det kan laves mere præcist ved at lave et AJAX kald fra brugerens browser til serveren f.eks. hver minut for at fortælle, at brugeren stadigvæk er online (selvom denne måske ikke bevæger sig rundt på siden). Således vil det være muligt at tjekke mere præcist hvor længe brugeren har været online, men her vil det modsat bare begynde at tage hårdt på serveren hvis du har mange brugere.

Ved ikke om det kastede en smule klarhed over sagen?



Som @Simon Smith siger kan det være svært, at sige hvor længe en bruger er online. Ikke så meget fordi man ikke kan finde af hvornår de går online, men mere fordi det er svært helt præcis, at sige hvornår de går offline.

Den bedste mulighed er polling hvor man fortæller serveren via AJAX, at brugeren stadig er online.



Det som begge hentyder til er en lille stump JavaScript der konstant "pinger" din server. Du kan læse mere om polling: http://stackoverflow.com/questions/6511979/polling-data-from-server-most-effecient-and-practical-way-setup.

Da du har en online status på dine brugere, vil du kunne med ca. 3-5 min. nøjagtighed få brugernes aktuelle online status.

Men uden polling vil du kun kunne udregne deres totale online tid, med en rimlig stor unøjagtighed.

Men til den reelle udfordring. Så handler det om at du skal registrere første gang en bruger er "online" på siden. Det gør du ved gemme en række i databasen med tidstempel og sætte en markering i $_SESSION så du ikke gentager indsættelse af rækken. Derefter kan du, når du benytter session handler, opdatere tidl. række med et andet tidstempel for hvornår session afsluttes.

Er det dog kun som gimmik til brugeren, kan du nok bruge noget lign. http://www.phpclasses.org/package/1681-PHP-Keep-track-of-the-time-users-spend-in-a-site.html



Tak til jer begge.
Har i nogle links i kunne anbefale hvor jeg kan læse mere om det.
Jeg har en "online" status - hvor den tjekker om man er inaktiv mv. men tror ikke det er i den retning i hentyder til.



Fold kodeboks ind/udPHP kode 




Jeg takker mange gange.



t