22 messaggi dal 20 febbraio 2002
Ciao a tutti,

ho un problema che mi sta letteralmente uccidendo. Ogni volta che credo di averlo risolto... si ripresenta puntuale puntuale.

Ho un file TXT nel quale salvo alcuni dati sugli accessi ad un sito abbastanza visitato (circa 6500-7500 pageview al giorno). Il file di testo funziona in modo molto banale: apro il file e salvo i dati (pageview) relativi a schermo, browser, referrer e altre due o tre cose simili. Salvo e chiudo. Punto.

Funziona perfettamente per giorni (5, 7, 10, ... a caso comunque vari di seguito) poi un giorno, senza alcun motivo... il file si svuota, come se venisse salvato "vuoto". Premetto che il file non viene sovrascritto o ricreato, tant'è che la data di CREAZIIONE risale sempre a molti giorni prima (per dire adesso mi si è resettato con dentro 75.600 accessi registrati e con un controllo sulla data di creazione mi dice che risale a 10 giorni fa).

Vi allego il codice di apertura e salvataggio file ("nomefile" contiene il percorso completo).

APERTURA
=========
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set f=fs.OpenTextFile(Server.MapPath(nomefile),1)
do while f.AtEndOfStream=false
testo=f.ReadAll
loop


ELABORAZIONE DATI
==================
dalla variabile "testo" estraggo quello che mi serve usando Instr() e replace(). Metodo banale e veloce, molto performante per ora. Ogni "record" lo salvo su una riga in questo modo

Explorer 6.0#44
Mozilla 1.4#12
Opera 7#3
...ecc...

Cioè scrivo nome e numero pageview associati. Idem per schermo, profondità di colore, referrer, ... Per aggiornare il valore recupero la riga che mi serve, splitto dopo il cancelletto "#", sommo +1 e poi sostituisco la riga con la nuova riga che ha il valore incrementato di di uno.


SALVATAGGIO FILE
=================
Set fs3=Server.CreateObject("Scripting.FileSystemObject")
set f3=fs3.OpenTextFile(Server.MapPath(nomefile),2)
f3.Write testo
f3.close


Punto. Il problema è che a volte non so cosa succeda ma salva qualcosa di vuoto e mi trovo tutto annullato, con le statistiche che ripartono da zero. Ho provato a fare dei controlli, per esempio "salva e poi controlla il peso del file, se è 0 o comunque minore di 100 risalva tutto" e cose del genere ma non servono a nulla.

Cosa potrebbe essere secondo voi? Non so più dove sbattere la testa diavolo... Se qualcuno volesse entrare nel dettaglio sono disponibilissimo a condividere codice completo e quant'altro :|

Fatemi sapere ragazzi! Ho pensato anche ad un eventuale "conflitto" tra utenti (accessi contemporanei al file) ma non saprei come ovviare alla cosa.
Modificato da Flak il 14 novembre 2003 00.40 -
2.584 messaggi dal 14 maggio 2001
Potrebbe essere un accesso contemporaneo ... non potresti aggiungere una riga al fondo del file al posto di leggerlo tutto e poi riscrivere il precedente testo?
Come performance dovresti migliorare... l'unico problema è che non avresti più l'id...

Così si aggiunge una parola alla fine del file esistente:
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("c:\test.txt", ForAppending,TristateFalse)
f.Write "Salve"
f.Close
22 messaggi dal 20 febbraio 2002
Purtroppo non posso, per un motivo molto semplice: non potrei parlare di statistiche. Se per esempio accedono 10 utenti di cui 6 con Explorer e 4 con Mozilla, devo aggiornare la riga di Explorer (+1 per sei volte) e 4 volte quella di Mozilla (+1 per 4 volte)

In quel caso non appendo, ma modifico (con instr cerco il browser, con replace sostituisco i valori).

L'append va bene se tu registri dati nuovi senza tracciarne le variazioni, ma non è questo il caso ahimè.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.