- Home
- Categorie
- Coding e Sistemistica
- Coding
- Scrivere statistiche sito su file di testo
-
Scrivere statistiche sito su file di testo
Salve a tutti, avevo intenzione di realizzare un piccolo programmino di statistiche per il mio sito. Lo so, potrei usarne uno giù esistente, ma mi serve una cosa molto personalizzata e quindi sono costretta a crearlo di sana pianta.
Avevo iniziato col creare un database in cui memorizzare gli accessi. Praticamente ogni volta che una pagina veniva visualizzata memorizzavo una nuova voce nel db, ma questo ha rallentato il server in maniera spaventosa e quindi l'ho dovuto disabilitare.
Allora mi è venuta un'idea: memorizzare i dati in un file di testo e poi, una tantum, leggere questo file di testo e trasferirlo in un db.Ho quindi creato una procedura che mi scrive una riga di testo per ogni accesso. In questa riga memorizzo l'ip, la data, il nome della pagina e l'id del banner che si sta visualizzando.
Sono riuscita a fare scrivere questo file di testo utilizzando la funzione fopen, fwrite, fclose.
Ora mi manca lo step successivo. Devo aprire questo file di testo, leggere le singole righe e trasferire i campi nei relativi campi del mio db. Ma non so come fare.
Qualcuno saprebbe aiutarmi?
E soprattutto, è questa la cosa giusta da fare?
-
Ciao, io controllerei bene le operazione effettuare per l'inserimento delle statistiche nel database, perchè è di sicuro più performante utilizzare un database che un file di testo.
-
Ciao freebreathe,
puoi fare un explode con newline come separatore e fare il count dell'array restituito.
-
Perfetta la funzione explode.
Posto qui un codice esempio nel caso a qualcuno potesse servire.
Ho fatto in modo di scrivere sul file di testo o campi nome, cogome ed e-mail. i campi sono separati dal carattere ":".[php]
<?php
$file = fopen("nomi.txt", "r");
//$buffer = fread($file, filesize("test.txt"));
//echo $buffer;
$percorso = file("nomi.txt");
while(list(,$value) = each($percorso))
{
$params = explode ( ":", $value, 3);#Usiamo trim() per eliminare eventuali spazi vuoti $params["nome"] = trim($nome); $params["cognome"] = trim($cognome); $params["email"] = trim($email); #Stampiamo i risultati a video echo $params[0]." - ".$params[1]." - ".$params[2]. "<br />";}
?>[/php]
-
Ed eventualmente una explode più list?
Mi sembra si usi cosi.list($nome,$cognome,$mail) = explode ( ":", $value, 3);