prohol
18.12.2009, 09:48:42
Witam,
Jak rozwiazujecie problem dostepnosci uzytkownika na stronie (np jak w naszej-klasie)?. Najwiekszym problem jest gdy uzytkownik zamknie przegladarke bez wylogowania. Jak wtedy okreslic jego status? W Dolphinie sa 2 pola w tabeli usera: jedno ze statusem (aktywny, zajety itp) a drugi ze znacznikiem czasowym ostatniej aktywnosci usera + w tabeli systemowej pozycja z max dlugoscia czasu aktywnosci usera (np 5 minut). I jak user nic nie robi na stronie np 5 minut to jego status przy niektorych funkcjach (jak wyszukiwanie) ustawiany jest na podstawie wzoru: if obecny_czas - czas_aktywnosci_usera > ostatni_czas_aktywnosci to status niedostepny - co nie implikuje zmiany pola status w bazie (bo to by bylo wkurzajace jakby przez 5 minut niekatywnosci user musial by zmieniac swoj status na aktywny itp). Jak rozwiazac ten problem? Wkrotce bede pisal swoj system i bede chcial taka funkcjonalnosc zaimplementowac. Obecnie system stoi na dolphinie i takie rozne dziwne kwiatki sie pojawiaja.
Pilsener
18.12.2009, 10:16:28
Ogólnie statusy są dwa: zalogowany i aktywny, aktywny użytkownik nie musi oznaczać zalogowanego (choć zazwyczaj tak jest) natomiast zalogowany aktywnego (gość się loguje i idzie do klopa na godzinę). Dlatego nie ma wygodnego ani wydajnego sposobu, po prostu mierzysz czas od ostatniej znanej akcji użytkownika, jeśli jest większy niż powiedzmy 5 minut user = nieaktywny, jeśli większy niż Twój czas ważności sesji = wylogowany (no chyba, ze kliknie oczywiście wyloguj). Nie znam żadnego sposobu by w PHP sprawdzić, czy user poszedł do klopa, czy wyłączył przeglądarkę - możesz posiłkować się AJAXem w celu wspomożenia swojego systemu (jednak nie może on opierać się w całości na AJAXie). Im częściej będziesz sprawdzał czas tym dokładniejszy będzie system, lecz baza i serwer będą bardziej obciążone - powinieneś uwzględnić to w konfiguracji i oczywiście pamiętaj o dobrym cache do tego.
prohol
18.12.2009, 10:56:48
Dzieki Pilsener. Tylko nie do konca rozumiem to posilkowanie sie Ajaxem? Moglbys to troche rozwinac?
marcio
18.12.2009, 11:18:10
Cytat(prohol @ 18.12.2009, 10:56:48 )

Dzieki Pilsener. Tylko nie do konca rozumiem to posilkowanie sie Ajaxem? Moglbys to troche rozwinac?
Chodzi o to ze mozesz wiedziec kto jest online bez przeladowania strony co jest bardziej precyzyjne i dodac sprawdzenie np co 10sec. zamiast co kazde przelodowanie strony.