Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Śledzenie zalogowanych
voytass
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 15.04.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


czesc

robie sledzenie zalogowanych uzytkownikow.
zrobilem tabele do skladowanua danych ze sledzenia, sklada sie ona z pol:
1. identyfikator sesji [sid]
2. identyfikator uzytkownika [uzkid]
3. IP uzytkownika [ip]
4. data [data]
5. strona odwiedzana przez uzytkowniika [str]

i chcialbym wysweitlac wszystkich uzytkonikow, ktorzy byli 'czynni' przez ostatnie 5 min.

mam wiec zapytanie:

  1. SELECT uzkid, DATA, ip, sid
  2. FROM track WHERE DATA > NOW() - INTERVAL 5 MINUTE GROUP BY uzkid ORDER BY DATA DESC LIMIT 0 ,$ile


no i nie otrzymuje tego co chce, poniewaz:
1. wiadomo, ze jeden uzytkownik bedzie mial duzo rekordow w tej tabeli wiec dlatego group ale chce by wybieral taki wiersz z danym ip, uzkid uzytkownika dla ktorego data jest najwyzsza (teraz niestety tak nie jest - tak jaby nie dzialalo ORDER BY data DESC) pojawia sie najnizsza data.
2. czy w ogole dobrze sie do tego zabralem - czy jest jakies lepsze rozwiazanie koncepcji sledzenia zuytkownika
3. co zrobic z tymi rekordami , ktore sa starsze od NOW() - INTERVAL 5 MINUTE? chcialbym je jakos skasowac? musze np. w crona dorzucicc odpowiednie skrypty?

pozdrawiam,

Ten post edytował voytass 17.07.2005, 10:02:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
janek
post
Post #2





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 31.01.2003
Skąd: piękne, czyste, pachnące Katowice

Ostrzeżenie: (0%)
-----


1. Nie wiem jaką masz konstrukcję sesji, ale jeden użytkownik powinien mieć jeden rekord w bazie. Przy przejściu do kolejnej strony robisz update tego rekordu, zmieniając czas i zmienne sesji (jeżeli potrzeba). Dzięki temu nie potrzebujesz group by.

2. Pomysł jest ok, sam stosowałem i działa do dzisiaj, ale przy założeniu że masz jeden rekord dla jednego uzyt - jak pisałem wyżej.

3. A nie czyści Ci jej funkcja odpowiedzialna za odśmiecanie sesji?

Jeżeli (tak jak piszesz) chcesz kasować wpisy starsze niż 5 min to najpierw napisz zapytanie delete, które to zrobi, a potem po prostu
  1. SELECT count(*)
  2. FROM track
i już wiesz ile osób było u Ciebie w ciągu ostatnich 5 min.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 14:56