Newsgroup: it.comp.www.php
Titolo: Tempo di permanenza sul sito

ciao a tutti!
vorrei molto sapere quanto tempo gli utenti restano collegati sul mio 
sito. Uso già da anni webalizer, ma non ha questa funzione che io 
considero fondamentale integrata (magari corredata da grafici per vedere 
se il tempo di permanenza cresce o diminuisce a seconda degli eventi e 
dell'ora, ad esempio) 
Qualcuno conosce un programma che faccia questa cosa o un hack per 
webalizer con queste funzioni?
Il programma dovrebbe estrarre i dati direttamente dall'access log di 
apache.
Grazie in anticipo ed a presto
-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-                             
          ICQ#: 2278341                  
         Giuda è tornato
 
http://www.giuda.it/
 

 Grazie in anticipo ed a presto
Il problema è che non c'è un modo sicuro per dire che un utente è rimasto
per tot tempo (se va tramite proxy quanti ip uguali ci potrebbero essere?
come fai a dire che un ip dopo 5 minuti è effettivamente "volato via" o
ha risposto al telefonino e poi ha ricominciato a navigare?)
-- 
Roberto Tagliaferri<-> r.tagliaferri@(forse)
tosnet.it
	Il giovane marito si ammira nudo allo specchio...
	"Vedi cara, con qualche centimetro in più sarei un re"
	e la moglie "e con qulche centimetro di meno saresti una regina!"

 webalizer con queste funzioni?
Purtoppo ho anch'io questo problema e ho anche scritto all'autore
offrendomi di pagare perche` implementasse questa funzione, senza ottenere
alcuna risposta...
C'e` pero` ModLogAn, un analizzatore di log derivato da Webalizer, che lo
fa: purtoppo pero` non e` ancora stabile, quindi non so quanto fidarmi.
A risentirci
\  Davide G. Borin
\\ !!Scudo anti-spam attivo!! Togliere le x e "eliminami" dall'indirizzo
\\\_____________________________________________________________________

apache.
E come fai? Per ogni accesso hai solo UNA riga, che ti dice quando il
tizio ha INIZIATO a consultare il sito.
Ti servirebbe... *mumble*... intanto di dire "Se questo tizio fa piu'
accessi in meno di N minuti, considero che sia rimasto SEMPRE sul mio
sito in quel frattempo...
Poi... *rimumble*... dovresti parsare il log di Apache, e magari fare
una prima scrematura:
192.168.0.20 - samadei [22/Jun/2001:13:36:32 +0200] 
192.168.0.25 - ereina [22/Jun/2001:13:36:33 +0200]
192.168.0.25 - ereina [22/Jun/2001:13:36:33 +0200]
192.168.0.32 - emarchia [22/Jun/2001:13:36:35 +0200]
192.168.0.32 - emarchia [22/Jun/2001:13:36:36 +0200]
192.168.0.20 - samadei [22/Jun/2001:13:36:36 +0200] 
192.168.0.20 - samadei [22/Jun/2001:13:36:37 +0200]
cut -f1,3,4 -d' ' < /var/log/access_log | sort | uniq \
	| tr -s "[[] " ":" | cut -f1-2,4- -d:
e questo ti ottiene roba del tipo
192.168.0.20:samadei:13:36:32
192.168.0.20:samadei:13:36:36
192.168.0.20:samadei:13:36:37
192.168.0.25:ereina:13:36:33
192.168.0.32:emarchia:13:36:35
192.168.0.32:emarchia:13:36:36
A questo punto, un programmino puo' leggersi le righe, e se il primo e
il secondo campo sono uguali, usare il terzo, quarto e quinto come una
timestamp:
char old_ip[MAXADDRLEN]="*";
char old_name[MAXNAMELEN];
char *buffer;
int time, old_time, firstseen;
if ((buffer=malloc(BUFSIZE))==NULL)
	die("Cannot allocate buffer");
while (!feof(stdin))
{
	buffer[0]=0;
	fgets(buffer, BUFSIZE, stdin);
	if (!*buffer) continue;
	ip   = strtok(buffer, ":");
	name = strtok(NULL, ":");
	// Algoritmo di Horner, adattato
	time = atoi(strtok(NULL, ":"));
	time = time*60 + atoi(strtok(NULL, ":"));
	time = time*60 + atoi(strtok(NULL, ":"));
	if (strcmp(ip, old_ip))
		new = 1;
	else if (strcmp(name, old_name))
		new = 1;
	else if (time - old_time > 3600)
		new = 1;
	if (new)
	{
		// Stampare i dati vecchi
		if (old_ip[0]!='*')
			printf("%s %s = %d - %d\n", old_ip, old_name, 
				firstseen,
				old_time + PAGEREAD_TIME);
		strncpy(old_ip, ip, MAXADDRLEN);
		strncpy(old_name, name, MAXNAMELEN);
		firstseen = time;
		new = 0;
	}
	old_time = time;
}
Usando dei vettori di clienti, si puo' fare a meno sia di sort che di
uniq e scrivere un unico programma che faccia tutto.
Leonardo
-- 
For Light is but the left hand of Darkness; and Darkness but the right
hand of Light. Blessed then be also Darkness, and Creation unfinished.
(Tenets of the Yomeshta cult)                                  +++ATH0