Per fare il conteggio degli utenti online io userei un approccio diverso... intanto non c'è modo di sapere quando un utente si allontana dal sito in maniera perfetta (si può mettere una chiamata ajax sull'evento onclose, ma questo dovrebbe essere fatto su ogni pagina e caricherebbe eccessivamente il server, inoltre non è affidabile, quindi da scartare come ipotesi), l'unica maniera è fare una stima. Ad esempio quando un utente entra nel sito lo registro in un apposta tabella "utenti_online" in cui metto l'ip e l'ora in cui ho registrato l'accesso. Ovviamente se un IP esiste già modifico l'ora in modo che rispecchi l'ultima pagina caricata. Allo stesso tempo nello stesso codice che fa queste operazioni eseguo una query che cancelli tutti i record nella tabella la quale differenza tra ora attuale e data registrata è superiore ai 3 minuti (e qui puoi decidere tu in base al contenuto del tuo sito, se è ricco di articoli puoi elevarlo anche a 5-7 minuti per fare la stima più accurata). Dopodichè conto quanti records ci sono nella tabella... e voilà. Quello è il numero degli utenti online (stimati).
|