Nasze strony wykorzystują pliki cookies. Używamy cookies i podobnych m.in. w celach reklamowych i statystycznych oraz w celu dostosowania serwisów do potrzeb użytkowników. Mogą też stosować je nasi reklamodawcy, firmy badawcze oraz dostawcy aplikacji. W przeglądarce można zmienić ustawienia dotyczące cookies. Więcej informacji. Jeśli nie wyrażasz zgody, opuść tę stronę.

pokazywanie zalogowanych uzytkownikow

Forum dyskusyjne poświęcone zagadnieniom związanym z tworzeniem serwisów z wykorzystaniem zaawansowanych technologii takich jak PHP, Perl, mySQL, ASP, CGI, XML, itp.

Moderator: Grupa pościgowa ;-)

pokazywanie zalogowanych uzytkownikow

Postprzez koksik » 28 stycznia 2005, o 23:48

za pomoca jakiego skryptu mozna wyswietlic uzytkownikow aktualnie zalogownaych na stronie, dodam ze podczas logowania uzyte sa sesje.
koksik
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 145
Dołączył(a): 3 stycznia 2005, o 13:41

pokazywanie zalogowanych uzytkownikow

Postprzez januzi » 29 stycznia 2005, o 00:16

na stronie bastka lub ygrega byl kiedys skrypt do zliczania zalogowanych
najprosciej zamiast szukac, napisac wlasny

tablica:
id autoinc
id_usera int
zalogowany time

kazde wejscie na strone spowoduje:
a) insert do tabeli jesli id_usera nie jest wpisane
b) update zalogowany, jesli id_usera juz bylo w tabeli
c) delete jesli zalogowany < time() - 5*60 (czyli zalogowany pozniej niz 5 minut temu i od tego czasu nic nie otwieral)

edit:
na koniec rzecz jasna mozesz select count(*) lub select nick i wyswietlic odpowiednie dane na ekranie
januzi
Mega GURU
Mega GURU
 
Posty: 1431
Dołączył(a): 18 października 2002, o 13:53

pokazywanie zalogowanych uzytkownikow

Postprzez koksik » 29 stycznia 2005, o 13:41

jak czytam wydaje sie byc to logiczne, aleza bardzo nie wiem jak to wykonac;)
koksik
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 145
Dołączył(a): 3 stycznia 2005, o 13:41

pokazywanie zalogowanych uzytkownikow

Postprzez koksik » 2 lutego 2005, o 00:22

to jak januzi napiszesz dokladniej jak to zrobic?
koksik
Jestem tu już dłuższą chwilę
Jestem tu już dłuższą chwilę
 
Posty: 145
Dołączył(a): 3 stycznia 2005, o 13:41

pokazywanie zalogowanych uzytkownikow

Postprzez sian » 2 lutego 2005, o 12:20

O, ja mam pytańco w temacie.

Przedstawię dwa schematy działania takiego skryptu, różniące się deczko - czy możecie mi powiedzieć, który Waszy zdaniem będzie wydajniejszy?

Schemat bazy (MySQL):
id - int, autoincrement
active - tinyint (0 lub 1)
last_visit - datetime

Wersja I. - taka jak Januzi podał (pole active w bazie tu nie jest potrzebne)
User wyświetla stronę:
a. znane ID - update last_visit
b. nie znane ID - tworzony jest nowy rekord, zwracane ID
c. usuwamy rekordy, gdzie różnica czasu np. < time() - 5*60
d. wyświetlamy select count(*) jako ilość userów
Uwagi: ID zwracane przy pierwszej wizycie trzymamy gdzieś (sesja?, cookie?), a ponieważ deletujemy stare rekordy (pkt. c) to w punkcie a należy sprawdzić czy rekord o danym ID istnieje - troszkę się nam skrypt rozrasta.

Wersja II.
User wyświetla stronę:
a. znane ID - update last_visit, set active = 1
b. nie znane ID - tworzony jest nowy rekord, (active = 1), zwracane ID, ustawiamy cookie
c. update na rekordy, gdzie różnica czasu np. < time() - 5*60 - set active = 0
d. wyświetlamy select count(*) where active = 1 jako ilość userów
Uwagi: ID zwracane przy pierwszej wizycie trzymamy w cookie, nic nie deletujemy więc nie musimy sprawdzać czy rekord o danym ID istnieje. Jednak można przypuszczać, że tabelka szybko będzie "pęcznieć", choć myślę, że większa część userów nie czyści cookie, więc powracając nie będzie dokładała nowych rekordów.

Jak myślicie który skrypt będzie wydajniejszy? Jak widać cały ciężar spoczywa na bazie. Zaznaczam, że nie jest problemem objętość bazy, więc ten argument odpada - choć pozostaje pytanie: czy i jak ilość rekordów wpływa na wydajność? Chętnie usłyszę Wasze opinie, pozwoli mi to zweryfikować moje przemyślenia na ten temat.

A może trzymać w cookie jeszcze last_visit? I w zależności od tego INSERT lub UPDATE?

EDIT: oczywiście pole active jest nie potrzebne w ogóle - nie muszę updatować tej flagi tylko wyciągać users online przez: count(*) where różnica last_visit i now() < 5 minut. Mi to potrzebne do czego innego.

EDIT2: Robię test - puściłem - do jutra - wersję bez deletowania, ale już widzę, że to nie ma sensu - po godzinie mam ponad setkę rekordów, które do niczego nie są potrzebne... Tak więc chyba sam sobie odpowiedziałem... :mrgreen: Hehe.
sian
Znawca tematu
Znawca tematu
 
Posty: 358
Dołączył(a): 2 listopada 2002, o 09:05


Powrót do PHP, Perl, SQL, CGI, XML...

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników

cron