![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 9.11.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam.
W tym temacie chcę, żebyście podali mi kilka sposobów sprawdzania ile graczy jest online w danej chwili. Oczywiście MySQL i jak najmniej zapytań. Ten post edytował vegeta 28.11.2010, 22:38:36 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Jakich graczy? Jaka gra? Konkrety!
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 9.11.2008 Ostrzeżenie: (10%) ![]() ![]() |
Ludzie (gracze) logują się. Przy logowaniu jednego podnosi się licznik graczy online o 1. Przy wylogowaniu jednego -1. Przy wygaśnięciu sesji -1. Chodzi mi o najbardziej optymalny skrypt, bo tutaj możliwości jest dużo.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Zapisujesz do bazy czas ostatniej akcji użytkownika, pobierasz te w których czas aktualny - czas ostatniej akcji < jakiejś tam wartości. Proste.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 9.11.2008 Ostrzeżenie: (10%) ![]() ![]() |
Też tak można, ale można też zrobić zapytanie update w polu active, które daje 1 przy zalogowaniu i 0 przy autowylogowaniu i wylogowaniu normalnym. Jest to lepsze metoda niż porównywanie dwóch wartości.
Czekam na inne propozycje. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
$select = mysql_query("SELECT count(*) FROM users WHERE loged = 1 and last_action > ".(time() - 360));
przy akcji mysql_query("UPDATE users SET last_action = ".time()." WHERE login = '{$login}'"); lub cachowanie co określony czas stanu aktualnego użytkowników Ten post edytował CuteOne 28.11.2010, 23:38:44 |
|
|
![]() ![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 15.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bez MySQL się nie obędzie ale postaram się przybliżyć Ci i nawinąć szybko temat, a wiec tak tworzysz plik config.php
gdzie : ip - to ip twojego servera urzytkownik -to nazwa urzytkownika bazy danych hasło -to hasło do bazy danych baza -to nazwa bazy danych MySQL Następnie tworzysz plik online.php
oczywiście linia
Może się różnić online -jest to nazwa kolumny z której będą wyciągane wartości =1(online=1) characters -jest to nazwa tabeli z której będą wyciągane dane powodzenia ![]() -------------------- www.l2teonpvp.pl
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 9.11.2008 Ostrzeżenie: (10%) ![]() ![]() |
@kristoph3r eee... Dobrze się wyśpij i przeczytaj rano pierwszy post w tym temacie.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
$nb_connected_connexion=300; // 5 minutes
$time_connected=date("U"); $ip_connected=$_SERVER['REMOTE_ADDR']; $query_connected=pg_query("select * from nb_connected where ip='$ip_connected'"); $nb_connected=pg_num_rows($query_connected); if ($nb_connected==0) { $query_connected=pg_query("insert into nb_connected values ('$ip_connected' ,'$time_connected')"); $result_connected=pg_affected_rows($query_connected); //echo $result_connected; } else { $query_connected=pg_query("update nb_connected set time='$time_connected' where ip='$ip_connected'"); } $time_max_connected=$time_connected-$nb_connected_connexion; $query_connected=pg_query("delete from nb_connected where time<'$time_max_connected'"); $query_connected=pg_query("select * from nb_connected"); $visitors=pg_num_rows($query_connected); |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 1 Dołączył: 27.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
I wszystko to jest opisane już w moim poście.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 9.11.2008 Ostrzeżenie: (10%) ![]() ![]() |
A czy wszyscy korzystają z przycisku wyloguj? Nie. I dlatego wybrałem przykład CuteOne.
Gdy logujesz się to robię update, w którym active=1 i last_action = time(). Wylogowanie robi to samo, tylko, że active zamienia na 0. Zliczanie ilości graczy online: liczę active gdzie active jest rowne 1 i last action jest większe od time() - 900. Automatyczne wylogowanie: wykonuje zapytanie select last_action gdzie ID jest rowne ID aktualnego gracza. Jeśli last_action jest mniejsze od time() - 900 to wywołuje zapytanie update, które zamienia active na 0 i last action na time, niszczę sesje ![]() Jeśli ktoś ma jakieś zastrzeżenia to jestem otwarty na uwagi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 11:14 |