Salve a tutti, ho provato a ragionarci su, volevo condividere la mia idea per avere la lista degli utenti (registrati in un db access) sempre corretta.
Mi sembra che consumi un po' di risorse, chiedo consiglio a tutti voi
Al login cerco user e pass nel db, se i dati corrispondono, faccio 2 operazioni
a) Creo dei cookies col mio ID e col mio nick
b) Metto nel database lo status di "online" su true
c) metto un campo "orainlinea" col valore della data e dell'ora ( now() )
Se faccio il logout, naturalmente, imposto il valore di "online" su false
Il problema nasceva nel fatto che chi cambia sito, o esce dal browser non fa prima il logout, dunque ho fatto così:
-ad ogni pagina che visito apro il database e aggiorno l'ora dell'ultima mia azione
-a calce della pagina metto un controllo sugli utenti che risultano online, quindi faccio una select di tutti gli utenti online, escludendo il mio ID salvato nel cookie e stampo i risultati
ho impostato, col dateDiff, una differenza in minuti, se la differenza porta un valore sopra i 15 metto lo status "sleeping", cioè online ma inattivo, dopo 30 minuti aggiorno il recordset impostando "online" su false
Quindi qualsiasi visitatore aggiorna lo status degli utenti online, cancellando lo status se necessario
Non è precisissimo, infatti fa il recordcount di tutti gli utenti online e poi passa a metterli offline, quindi può risultare che ci sono 5 utenti, poi la lista ne mostra 4, comunque è abbastanza preciso, del resto succede così anche in facebook.
Ci sono parecchi accessi al database, ho paura che richieda molte risorse, ma anche facendo con jquery richieste asincrone penso che sarebbe un mattone.
esempio
ora mi manca solo di inserirci una chat
ciao

Rispondi quotando