![]() |
![]() |
![]()
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:
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 15.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem pewien czy dobrze mi sie kojarzy ale sprobuj dac order by DATA asc
Prosciej jednakrze byloby modyfikowac rekord istniejacego juz w bazie usera np. najpierw szukasz czy masz dane o tym userze czyli robisz selecta po username
jesli bedzie wieksze od zera to modyfikujesz rekord ktory zwrocilo czyli update przy identycznych warunkach w klauzuli where jesli zwroci 0 dodajesz nowy. Co do kasowania rekordow to mozna to z poziomu php zrobic
Wykonujesz takie zapytanie na poczatku skryptu wyswietlajacego strone i po klopocie. Rekordy zostana skasowane zanim nastepne zapytanie zacznie je wyswietlac, czyli uzytkownik zobaczy tylko aktualne wpisy. Kiedy ktos znowu wywola strone stare wpisy zostana usuniete (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Mozna tez dodac to zapytanie przed zapytaniem dodajacym usera do bazy track, wtedy automatycznie najpierw bedziemy kasowac stare wpisy a potem dodawac nowe. Jeszcze lepszym rozwiazaniem moze byc najpierw dodawac nowe / modyfikowac istniejace rekordy, a potem usuwac stare (przy modyfikacji jest chyba mniejsze obciazenie bazy chyba niz jak kasujesz rekord i za chwile dodajesz nowy) Zastosowanie tego rozwiazania ma jednak pewien minus (generuje wieksze obciazenie bazy niz wywolana z crona raz na minute komenda sqla w sytuacjach kiedy twoj serwis jest popularny) wiec w zaleznosci od sytuacji trzeba rozwazyc co berdzie lepsze cron czy kasowanie z poziomu php |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 15:37 |