"dati strani" nel Contatore visite..

martedì 15 giugno 2010 - 10.31

Superpippo1980 Profilo | Junior Member

Ciao a tutti.
Mi capita 1 cosa molto strana.
Nel mio sito web ho messo un contatore dei visitatori e un contatore per le pagine.

Per i visitatori ho fatto un semplice script che va ad incrementare di 1 il valore in un campo sul Session_Start del global.asax.


Per le visite, siccome tutte le pagine si appoggiano a un master, ho messo lo script che va ad incrementare li il contatore delle pagine.

I record sul db sono divisi per ora in modo da avere le statistiche per ora..

2 cose stranissime:
in alcuni casi il numero di visitatori èsuperiori alle pagine lette.
Tutte le notti tra le 4 e 5 ho tipo 400 visitatori ( e pochissime pagine lette, tipo 30 ) ...
il mio è un sito di amici...quindi alle 4 del mattino dormono tutti!!!!! :)

come può essere possibile secondo voi???


vi allego anche le 2 procedure :

public class Contatore
{

public static void NuovoVisitatore(string ConnString)
{

SqlConnection Conn = new SqlConnection(ConnString);

try
{
Conn.Open();
DateTime Data = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
int Ora = DateTime.Now.Hour;
SqlCommand Cmd = new SqlCommand("Update db_Visite set Numero=Numero+1 where Data=@Data And Ora=@Ora", Conn);
Cmd.CommandTimeout = 2;
Cmd.Parameters.Add("@Data", SqlDbType.DateTime, 8, "Data");
Cmd.Parameters.Add("@Ora", SqlDbType.Int, 4, "Ora");

Cmd.Parameters["@Data"].Value = Data;
Cmd.Parameters["@Ora"].Value = Ora;

int conta = Cmd.ExecuteNonQuery();
if (conta == 0)
{
Cmd = new SqlCommand("Insert into db_Visite values(@Data,@Ora,1)", Conn);

Cmd.Parameters.Add("@Data", SqlDbType.DateTime, 8, "Data");
Cmd.Parameters.Add("@Ora", SqlDbType.Int, 4, "Ora");

Cmd.Parameters["@Data"].Value = Data;
Cmd.Parameters["@Ora"].Value = Ora;

Cmd.ExecuteNonQuery();
}

Cmd.CommandText = "insert into db_Online values (GetDate())";
Cmd.ExecuteNonQuery();

if (DateTime.Now.Hour < 2)
{
Cmd.CommandText = "Delete from db_Online where Data<@Data";
Cmd.Parameters.Clear();
Cmd.Parameters.Add("@Data", SqlDbType.DateTime, 8);
Cmd.Parameters["@Data"].Value = DateTime.Now.Subtract(new TimeSpan(2, 0, 0));
Cmd.ExecuteNonQuery();
}
}
finally
{
Conn.Close();
}
}

public static void PaginaLetta(string ConnString)
{

SqlConnection Conn = new SqlConnection(ConnString);

try
{
Conn.Open();
DateTime Data = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
int Ora = DateTime.Now.Hour;
SqlCommand Cmd = new SqlCommand("Update db_PagineLette set Numero=Numero+1 where Data=@Data And Ora=@Ora", Conn);
Cmd.CommandTimeout = 2;
Cmd.Parameters.Add("@Data", SqlDbType.DateTime, 8, "Data");
Cmd.Parameters.Add("@Ora", SqlDbType.Int, 4, "Ora");

Cmd.Parameters["@Data"].Value = Data;
Cmd.Parameters["@Ora"].Value = Ora;

int conta = Cmd.ExecuteNonQuery();
if (conta == 0)
{
Cmd = new SqlCommand("Insert into db_PagineLette values(@Data,@Ora,1)", Conn);
Cmd.Parameters.Clear();
Cmd.Parameters.Add("@Data", SqlDbType.DateTime, 8, "Data");
Cmd.Parameters.Add("@Ora", SqlDbType.Int, 4, "Ora");

Cmd.Parameters["@Data"].Value = Data;
Cmd.Parameters["@Ora"].Value = Ora;

Cmd.ExecuteNonQuery();
}
}
finally
{
Conn.Close();
}
}

}







Gluck74 Profilo | Guru

dove e come usi questa classe contatore?

per quanto riguarda le 4 di notte..... non è raro che qualche motore di ricerca aggiorni i suoi "indici" proprio di notte. Potrebbe anche essere quello,
oppure qualche tuo amico, mentre aspetta di assaltare la citta vicina a "kingdoms of Camelot" proprio mentre il nemico dorme, viene a fare una visita sul tuo sito..... hi hi hi

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5