Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP] Status użytkownika (online, offline)
-Gość-
post 25.06.2013, 11:06:38
Post #1





Goście







Witam. Robię coś w rodzaju poczekalni, gdzie będzie wyświetlana lista użytkowników przeglądających daną stronę. Problem rodzi się w punkcie 4, wyjaśnię po przedstawieniu działania mojego systemu.

1. użytkownik wchodzi na stronę, jest dodawany do listy
2. jest ustawiony interval w javascript, który aktualizuje czas, kiedy ostatnio był widziany użytkownik
3. podczas tego intervala przy okazji kasowane są rekordy, gdzie czas nie został zaktualizowany od x sekund
4. w odpowiedzi serwer podaje, jakich użytkowników należy dodać i usunąć z listy w przeglądarce

co do punktu 4, serwer miałby zwrócić użytkowników, których rekordy zostały usunięte poleceniem DELETE. tu rodzi się problem, bo niektórzy użytkownicy zostaną usunięci w jednym zapytaniu, inni - w drugim, od innego użytkownika. tak samo z dodawaniem userów - temu, komu jako pierwszemu wykona się interval, dodadzą mu się użytkownicy, którzy weszli do poczekalni.
więc tu rodzi się myśl, aby po prostu od nowa listować użytkowników za każdym wywołaniem intervala. ale to już wydaje się nieoptymalne

da się to zrobić jakoś inaczej, by użytkownicy na bieżąco byli aktualizowani, a mniejszym kosztem transferu?
Przy okazji, czy ten system jest ogólnie w miarę optymalny? Może istnieją lepsze sposoby?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
b4rt3kk
post 25.06.2013, 11:11:07
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


A na jakiej podstawie stwierdzasz, że dany użytkownik "nie był widziany od x sekund"? Rzeczywiście jest Ci do tego potrzebny JS? Użytkownik może przechodzić do różnych podstron, itd.? I to wszystko odbywa się za przeładowaniem strony?


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
-Gość-
post 25.06.2013, 11:21:45
Post #3





Goście







Tak, potrzebny mi do tego JS, bo poczekalnia ma się aktualizować bez przeładowania strony..
Mam interval, który wysyła do serwera informację, że dany użytkownik jest zalogowany. Wtedy zapisałbym w bazie kolumna lastseen = time()
przy okazji wykonywane jest zapytanie delete where lastseen < time()-x (czyli nie odpowiada od x sekund)


po opuszczeniu podstrony ma wywalać użytkownika z poczekalni
Go to the top of the page
+Quote Post
b4rt3kk
post 25.06.2013, 11:26:32
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Więc zapewne masz w bazie zapisanych użytkowników, którzy obecnie przebywają w poczekalni, tak? Zamiast zwracać to co zostało usunięte poprzez delete, czyścisz całą listę poczekalni i pobierasz Ajaxem z bazy aktualną listę (oczywiście jako dodatkowy warunek możesz sprawdzać czas - jakby nie zdążyło usunąć rekordu z bazy przed sprawdzeniem).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
-Gość-
post 25.06.2013, 11:34:01
Post #5





Goście







okej dzięki aarock.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:33