 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
Shacal
Data înscrierii: 07/Sep/2004
Mesaje: 68
Locație: Hunedoara
|
| Trimis: Mar Sep 07, 2004 11:26 pm Titlul subiectului: online users |
|
|
Imi spune si mie cine va cum sa creez un scrit care sa imi afiseze numarul de seri online ??
Eu am reusit sa fac unul in care folosesc o variabila pt a seta timpul cat un user este considerat online dar dezavantajul este ca atunci cand un user inchide pagina la ceilalti tot acelas nr de vizitatori le apare .
As dorii si eu un cod sursa care sa se ia dupa ip sau ceva si atunci cand un user inchide pagina sa se modifice automat numarul si la ceilalti din pagina. Am eu ceva ideei dar sunt doar la inceput si nu reusesc.
Cam asa arata ce am lucrat eu HELP ME PLEASE !!!
$mysql_host = "localhost"; //adresa mysql -- implicit localhost
$mysql_user = ""; //userul mysql
$mysql_pwd = ""; //parola de conectare la DB
$mysql_db = "test"; //numele bazei de date
$mysql_port = 3306; //portul de conectare
$max_time = 600; //timpul cat un user este considerat online
$db = @mysql_connect($mysql_host . ":" . $mysql_port,$mysql_user,$mysql_pwd)
or die ("Nu m-am putut conecta la serverul mySQL");
mysql_select_db($mysql_db,$db)
or die ("Nu m-am putut conecta la baza de date " . $mysql_db);
$tables_result = mysql_list_tables($mysql_db);
$TABLE_EXISTS = FALSE;
for ($c = 0; $c < mysql_num_rows($tables_result); $c++)
if (mysql_tablename($tables_result,$c) == "users_online") { $TABLE_EXISTS = TRUE; }
if (!$TABLE_EXISTS)
mysql_query("CREATE TABLE users_online (id INT NOT NULL auto_increment PRIMARY KEY, sess_id VARCHAR(100), time DATETIME)",$db);
session_start();
$id = session_id();
$query = mysql_query("SELECT * FROM users_online WHERE sess_id = '$id'",$db);
if (mysql_affected_rows() > 0)
mysql_query("UPDATE users_online SET time = now() WHERE sess_id = '$id'",$db);
else
mysql_query("INSERT INTO users_online VALUES(0,'$id',now())",$db);
$now = date("U") - $max_time; // $now = UNIX timestamp - $max_time
$now = date("Y-m-d H:i:s",$now);
mysql_query("DELETE FROM users_online WHERE time < '$now'",$db);
$count_query = mysql_query("SELECT COUNT(*) as TOTAL FROM users_online",$db);
$user_count = mysql_result($count_query,0,"TOTAL");
?> |
|
| Sus |
|
deltiq
Data înscrierii: 21/Sep/2004
Mesaje: 12
Locație: Iasi
|
| Trimis: Mar Sep 21, 2004 2:53 pm Titlul subiectului: Re: online users |
|
|
Shacal a scris: dezavantajul este ca atunci cand un user inchide pagina la ceilalti tot acelas nr de vizitatori le apare .
...
Cam asa arata ce am lucrat eu
...
$max_time = 600; //timpul cat un user este considerat online
in primul rand 10 minute e cam mult timp pentru a considera un user online dupa ce inchide pagina. In al doilea rand asta e tot conceptul de "user online", adica pe durata ultimelor x minute un user a accesat o pagina. daca tii cu tot dinadinsul sa vezi CU ADEVARAT cati useri sunt online, pune $max_time=5 si atunci rezolvi problema cu "atunci cand un user inchide pagina la ceilalti tot acelas nr de vizitatori le apare". Cand o sa vezi rezultatul dezastruos o sa intelegi.
Tu ai scris codul? iata cateva chestiuni inutile pe care le-am vazut :
Cod: $tables_result = mysql_list_tables($mysql_db);
$TABLE_EXISTS = FALSE;
for ($c = 0; $c < mysql_num_rows($tables_result); $c++)
if (mysql_tablename($tables_result,$c) == "users_online") { $TABLE_EXISTS = TRUE; }
if (!$TABLE_EXISTS)
mysql_query("CREATE TABLE users_online (id INT NOT NULL auto_increment PRIMARY KEY, sess_id VARCHAR(100), time DATETIME)",$db);
deci aici ce faci tu? creezi un tabel care nu exista. Practic, primul tau vizitator va crea acest tabel, iar apoi la urmatiorii 999.999 verifici daca tabelul exsta!!! sfat: creezi tabelul o singura data si nu mai verifici degeaba daca exista. scoti de tot codul de mai sus, e ineficient. |
|
| Sus |
|
johnny
Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti
|
| Trimis: Lun Sep 27, 2004 7:57 pm Titlul subiectului: |
|
|
Tutorial codewalkers:
http://codewalkers.com/tutorialpdfs/tutorial14.pdf |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|