Utenti on line

Ho trovato un altro thread con titolo simile, ma non risponde alla domanda che ho in testa.

Come da titolo, devo tracciare gli utenti on line in un forum, possibilmente dividendoli per sezione che stanno visitando.

Il problema non si pone.

La tecnica è ovviamente quella delle sessioni registrate su un DB.

Ma come posso sapere quando un utente "stacca la spina" senza passare per il logout?

La sessione dopo un po scade sul server, ma chi si preoccupa di cancellare il record relativo all'utente che se ne è andato?

inviato 9 anni fa
IcarusDream
X 0 X
Ma come posso sapere quando un utente "stacca la spina" senza passare per il logout?

Non lo puoi sapere, devi utilizzare un sistema a time-out. In sessione (nel DB) devi memorizzare il timestamp dell'ultima pagina visualizzata. Se tale istante più vecchi di (ad es.) 20 min. allora puoi ritenere che l'utente è andato via.

Le sessioni su DB scadono sul server quando il record associato viene cancellato o ignorato. Questo dipende quindi dal codice che interagiche con la tabella del DB e non da PHP (le sessioni su DB non sono un sistema nativo di PHP quindi dipende tutto da come le si relaizza).

Con una certa frequenza (gestibile da php.ini) il PHP richiama una funzione per "fare le pulizie", ma questa funzione, nel caso di sessioni su DB, deve essere scritta dal programmatore perché PHP se ne lava le mani.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

 ???

Quindi in ogni pagina dovrei mettere una funzione che fa pulizia sul DB di tutti i record con timestamp > del timeout della sessione?

risposto 9 anni fa
IcarusDream
X 0 X

ma sai come si implementano le sessioni su DB?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Se me lo chiedi così credo di no  :-\

Io avrei messo su una tabella con un campo per il SessionID e uno per il timestamp.

La tabella delle sessioni sarebbe andata in join con quella degli utenti.

Mi sono perso qualcosa?  ???

risposto 9 anni fa
IcarusDream
X 0 X
Mi sono perso qualcosa?  ???

Un bel po'...

Per implementare le sessioni su DB devi dire a PHP il nome delle funzioni, scritte da te, che dovranno sostituire quelle che internamente usa PHP per gestire le sessioni. Guarda qui:

http://it.php.net/manual/en/function.session-set-save-handler.php

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

 ??? Francamente non vedo l'utilità di fare un overload delle funzioni native per le sessioni.

Forse sono io che faccio fatica a capire, non lo nego, ma salvare ID di sessione e timestamp mi sembra sufficiente per il mio scopo.

risposto 9 anni fa
IcarusDream
X 0 X

Certo, potrebbe essere eccessivo se lo scopo è solo contare gli utenti online. Dovrai comunque realizzare la funzione per far "pulizia" dei record ormai vecchi.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda