Contatore di utenti on-line

2008-05-05 | Tags: ,

Quasi tutti i siti ne posseggono uno. Sono nati anche siti che ne offrono di già pronti, di tutti i tipi, da aggiungere al proprio blog o sito. Sto parlando dei contatori di utenti on-line.

Contare gli utenti on-line significa contare quanti utenti, in un determinato lasso di tempo, stanno visitando il sito. In genere, questo lasso di tempo è di circa 300 secondi (o 5 minuti); per utente, inoltre, intendiamo qualsiasi client faccia una richiesta al sito, per cui sia utenti in carne ed ossa che spiders di motori di ricerca.

Che dire se vogliamo realizzare la nostra applicazione personalizzata? Infatti, è vero che di siti che ne offrono di gratis ce ne sono tanti. Ma è anche vero che molte volte questi siti non sono ben tenuti, per cui risultano lenti nella visualizzazione e questo rallenta anche la visualizzazione del nostro sito.

Proprio per questo motivo ho deciso di creare il mio personale in PHP 5.

Facendo una breve ricerca in rete, ho trovato numerosi script PHP 5 che risolvevano questo problema. Tuttavia hanno una pecca, si appoggiano ad una tabella in un database MySQL. Questo, sebbene molto facile da realizzare, lo rende dispendioso in termini di risorse e tempi di esecuzione.

Infatti, ogni volta lo script deve aprire una connessione col server di database, fare delle query, chiudere la connessione e poi analizzare i risultati. Senza tenere conto del fatto che la tabella col tempo diventa enorme, piena di records obsoleti; per cui bisogna fare anche in modo di svuotarla qualche volta.

Per cui ho optato per uno script che si basasse su di un file da leggere direttamente dal filesystem ed ho simulato un tracciato record come un array serializzato direttamente in PHP. In questo modo, leggo il contenuto del file ed analizzo il record direttamente in memoria, senza dover occupare risorse inutili.

L’array è un che ha per indice l’indirizzo IP del client e per valori la pagina che si sta visualizzando e l’orario in cui la si visualizza (in formato timestamp).

Sfruttando il fatto che un array non può avere due indici uguali, ogni indirizzo IP corrisponde ad un utente sul sito. Per eliminare un utente basta verificare che il valore dell’orario di accesso non sia superiore ai 300 secondi. Se superiore, con un semplice , andiamo ad eliminare il valore dall’array. Terminate tutte queste operazioni, serializziamo di nuovo l’array e lo salviamo nel file.

Il tutto, tradotto in codice PHP 5 diventa:

Le prime due righe vanno personalizzate. La prima indica il percorso assoluto ed il nome del file in cui salvare i dati (che deve avere permessi di scrittura). La secondo riga, invece, stabilisce la durata di una sessione utente in secondi.

Nella variabile $total c’è il numero totale di utenti presenti in un determinato istante. Per cui, stampando quella variabile, viene fuori il valore che ci interessa visualizzare sul sito.

Peculiarità di questo script è che è possibile anche sapere quanti visitatori stanno visualizzando ogni singola pagina, oltre che il valore totale dell’intero sito: una cosa molto carina che non tutti offrono. L’array $onlinecount è un array associativo che ha per indice la pagina del nostro sito e come valore il numero di utenti che la stanno visualizzando.

Per cui, con uno script come il seguente possiamo indicare quanti visitatori stanno visualizzando la nostra pagina:

Questo è tutto, se lo script vi è piaciuto fatemelo sapere con un commento o con una donazione.

  1. 1 trackbacks
    1. 2008-05-06 - diggita.it