Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kto jest online, jaki algorytm
Avatarus
post
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 0
Dołączył: 12.12.2006
Skąd: Pszów

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


Witam
Jak najbardziej optymalnie zrobić moduł do pokazywania kto jest online z zalogowanych userów?
Mam skrypt logowania. Tylko nie wiem zbytnio jak zapisać w nim dane o tym czy user jest online czy nie.

Jak się to robi profesjonalnie i w miarę optymalnie żeby bazy nie zabić duża ilością zapytań.

Dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
darophp
post
Post #2





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Ja pisałem kiedyś takie coś i mam zrobione tak:
- osobną tabelę "zalogowani"
  1. CREATE TABLE `zalogowani` (
  2. `login` varchar(50) NOT NULL,
  3. `data` datetime NOT NULL,
  4. PRIMARY KEY (`login`)
  5. )

- oczywiście łączenie i do sesji zapisuje login użytkownika
- następnie zapytanie i wstawiam użytkownika do tabeli
  1. $_SESSION['login']=$login;
  2. mysql_query("INSERT INTO zalogowani SET login='{$_SESSION['login']}', data=NOW()");

- tam gdzie ma być wylogowanie użytkownika, ten kod:
  1. mysql_query("DELETE FROM zalogowani WHERE login='{$_SESSION['login']}'");

- tam gdzie chcesz śledzić usera
  1. if ($_SESSION['login']) {
  2. mysql_query("REPLACE INTO zalogowani SET login='{$_SESSION['login']}', data=NOW()");
  3. }

- tam gdzie chcesz wyświetlić użytkowników
  1. mysql_query("DELETE FROM zalogowani WHERE data<DATE_SUB(NOW(),INTERVAL 15 MINUTE)");
  2. $wynik = mysql_query("SELECT * FROM zalogowani ORDER BY login");
  3. if ($wynik) {
  4. echo "Zalogowani użytkownicy: ";
  5. while($dane=mysql_fetch_assoc($wynik)) {
  6. if (++$i>1) echo ", ";
  7. echo "{$dane[login]}";
  8. }
  9. }
  10. }


No ... w sumie napisałem Ci wszytko, powinno działać (IMG:style_emoticons/default/smile.gif)
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: 29.09.2025 - 09:32