realizzazione script utenti on line...

ragazzi vorrei realizzare un script che visualizza il numero di utenti on-line... sapete dirmi la procedura per la realizzazione di tale script?? grazie in anticipo della risposta... :D

inviato 8 anni fa
felix1
X 0 X

ma si tratta di utenti registrati (indi informazioni come quelle dei forum) oppure accessi anonimi e ti serve solamente ricavar il numero degli utenti connessi al sito in quel momento?

risposto 8 anni fa
larchitetto
X 0 X

si solo utenti connessi in quel momento! ;D

risposto 8 anni fa
felix1
X 0 X

mi verrebbe da usare un file, ma non è un semplice "conta accessi", perchè indica un dato che può crescere o decrescere nel tempo.

indi potresti metter su un db che raccolga i seguenti dati: id (auto_increment), ip e browser (dell'utente), timestamp della connessione.

chi richiede una pagina, lo script controlla che esista già quell'utente; se esiste, fa un update con il nuovo timestamp; altrimenti fa una insert.

lo script che dà in output il numero degli utenti connessi nell'ultimo periodo di tempo (5 minuti ad esempio), esegue delle query che elimini i record scaduti (facoltativo), e prelevi i record buoni, ne fa il count e lo manda a video.

c'è però un problema in tutto ciò: dipende dal traffico del sito, ma può accadere che la tabella può riempirsi di buchi e di avanzare sempre con il contatore auto_increment; periodicamente bisognerebbe fare una manutenzione che svuoti la tabella (azzerando l'auto_increment) e ripristinando i dati ancora validi con nuova chiave.

infine, se avete idee migliori, postatele... questa m'è venuta così sul momento :P

ciaoo

risposto 8 anni fa
larchitetto
X 0 X

Una soluzione potrebbe essere la seguente:

Crea una tabella nel DB contenente le colonne session_id di tipo varchar e data_ultimo_accesso di tipo intero.

Al primo accesso di un utente avvii la sessione, setti [tt]$_SESSION['registrato'] = true;[/tt] e inserisci un record nella tabella suddetta, con il session_id ricavato dalla funzione [tt]session_id()[/tt] e la data_ultimo_accesso con il timestamp ottenuto da [tt]time()[/tt]:

"INSERT INTO nome_tabella SET session_id = " . session_id() . " AND data_ultimo_accesso = " . time()

Al successivo accesso dell'utente (dedotto dal fatto che la variabile [tt]$_SESSION['registrato'][/tt] è pari a true) devi fare una UPDATE del record precedentemente inserito

"UPDATE nome_tabella SET data_ultimo_accesso = " . time() . " WHERE session_id = " . session_id()

Per contare gli utenti online:

1) cancella dalla tabella tutti coloro che hanno effettuato l'ultimo accesso $n = 20 minuti fà (e quindi quasi certamente sono andati via):

"DELETE FROM nome_tabella WHERE data_ultimo_accesso < " .  time() - $n * 60;

2) conti quanti record ci sono nella tabella

"COUNT * FROM nome_tabella"

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

grazie gianni! adesso provo a creare lo script.. se ho problemi posto O0

risposto 8 anni fa
felix1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda