Newsgroup: it.lavoro.professioni.webmaster
Titolo: Tempo di permanenza su una pagina web

E' possibile sapere il tempo di permanenza di un visitatore su una
pagina web???
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 pagina web???
Devi usare javascript ed uno script server side per la registrazione.
Saluti
-- 
I'am what I'am, I do what I can

 ha scritto nel messaggio
news:cc8da3575ee8ffa6f73...@mygate.mailgate.org...


 pagina web???
il tempo esatto di permaneza di un visitatore e' impossibile... puoi solo
calcolare dal momento che accede al momento ch fa un'altra operazione...
infatti dall'ultima operazione al momento che abbandona il sito e'
impossibile saperlo... :)))
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Il risultato č che i mercati stanno diventando piů intelligenti, piů
informati, piů organizzati. Partecipare a un mercato in rete cambia
profondamente le persone.

 sito e' impossibile saperlo... :)))
A seconda della reale necessità si può però usare un
trucchettino un po' lurido ma efficace. Io avevo
fatto un messenger in ASP per gli utenti di un sito
in modo da vedere chi fosse online e chi no, mandare
messaggi, eccetera (una sorta di semplice ICQ che
si aggiornava, ovviamente, ad ogni caricamento delle
pagine)
Per sapere quando esattamente un utente non era in
linea usavo un popup sull'evento onexit-onclose. Si
apriva un popup di dimensioni 1x1 pixel che caricava
un banale file ASP con la query per impostare lo
stato "online" da "true" a "false". In questo modo
tracciavo sia chi abbanonava il sito, sia ch chiudeva
il browser
Un popupo aperto sull'uscita e impostato in questo
modo (1x1 pixel) a volte non lo si nota neanche. Non
si apre nulla, in verità: per un istante compare
solo la finestra ridotta a icona sulla taskbar di
Win, perchè il popup non si vede fisicamente sul
desktop, il che è assai comodo. Chi blocca i popup
(Mozilla o altri sistemi) chiaramente "inganna"
il sistema, ma i popup bloccati sono sicuramente
una minoranza. Ho usato questo sistema per qualche
mese e tra tutti gli utilizzatori solo un paio
mi hanno chiesto con curiosità "scusa ti è mai
capitato divedere una finestra che per un istante
sembra comparire ma poi non compare, cioè non c'è
ma c'è...?"

 linea usavo un popup sull'evento onexit-onclose. Si
un sistema efficace... ma improponibile all'interno di un sito...
soprattutto perche' non ha molto senso sapere esattamenet la permanenza di
un utente... penso sia molto piu' importante conoscere il percorso e i
documenti visitati/letti :)))


 documenti visitati/letti :)))
A me interessa sapere proprio il tempo di permanenza di un utente su una
pagina web.


La tua soluzione è interessante ma come dici tu è un po lurida.
Gli eventi che hai citato OnExit OnClose sono gestibili 
sia da JavaScript che da ASP? 


 sia da JavaScript che da ASP?
rocorda che ASP e' solo lato server...


 OnClose sono gestibili sia da JavaScript che da ASP?
Li gestisci con Javascript quando l'utente chiude
il browser oppure cambia sito. L'evento fa
scattare il popup, che a sua volta carica una
pagina ASP con due o tre righe di codice per
il cambiamento di stato dell'utente. Subito dopo
il popup si chiude con un banale self.close();
Non funziona solo se il browser ha disabilitato
Javascript ma è una eventualità che accade troppo
di rado per avere un valore statisticamente utile

 il popup si chiude con un banale self.close();
Per cambio sito intendi cambio dominio? A me serve il tempo di 
permanenza su una pagina in particolare di un sito. 
Premetto che JavaScript lo conosco poco, comunque suppongo che 
esistono eventi per gestire l'entrata in una pagina e quindi ti 
pongo questa domanda: quando si verificano gli eventi
di entrata e uscita dalla pagina prendo l'orario dal server
e calcolo la differenza, è fattibile?


 e calcolo la differenza, è fattibile?
Ti avevo gia' rispsto al riguardo.
Devi utilizziare js per tracciare l'evento lato client e notificarlo
lato server ad uno script per la registrazione dell'evento su DB (od
equivalente).
Solo con JS o solo server side non riuscirai a fare molto.


 la differenza, è fattibile?
Si è una soluzione fattibile. L'utente accede alla
pagina alle 14.33.00 e ci resta un po'. La pagina
successiva la visita alle 14.33.41, per cui è
rimasto 41 secondi sulla pagina precedente. Naturalmente
questo presuppone che tu salvi l'ora d'accesso alla
pagina, altrimenti non puoi fare i conti. Via server
lo fai per esempio con un database oppure meglio
ancora con un file di testo/xml. Via browser, cioè
se non usi ASP o PHP, devi usare per forza i cookies
per tener traccia delle informazioni. Puoi fare tutto
via cookies e salvare i dati solo alla fine, con il
popup, passando alla pagina ASP i dati presi con Jscript
Le informazioni utili potrebbero essere IP, ORA e PAGINA
per esempio:
"151.33.168.121", 14.33.00, "/default.asp",
"151.33.168.121", 14.33.41, "/contatti.asp"
Il primo valore (l'IP dell'utente) lo usi come
identificativo per tracciare gli spostamenti.
Nota1: a differenza di Jscript, i cookies capita di
trovari disattiati/bloccati/filtrati pià frequentemente
per cui la prima soluzione (database, TXT o xml) forse
è la più sicura
Nota2: sto facendo delle considerazioni generiche
per cui tieni buono il "concetto", i modi per metterlo
in atto possono essere vari ovviamente

 documenti visitati/letti :)))
Vabbò quello è abbastanza standard in fondo, no? Insomma
è una specie di log, non ha particolari problemi

>
http://www.shinystat.it
A pagamento, per la funzione di registrazione del tempo di permanenza.

 Solo con JS o solo server side non riuscirai a fare molto.
Sono alle prime armi mi potresti fare un esempio banalissimo di uno
script server side? Dove viene messo, come viene richiamato e come
funziona.
Ciao


 funziona.
Sorry, ma al momento non ho tempo per fare lezioni di informatica.
Cerca in rete, si trovano decine di migliaia di pagine che spiegano la
programmazione server side.


 messo, come viene richiamato e come funziona.
Per sommi capi, proprio per capire il concetto:
L'utente accede al sito e carica CONTATTI.ASP. La
pagina come prima cosa si collega ad un piccolo database
e inseriscealcuni dati di quell'utente:
+ IP (per identificarlo)
+ DATA E ORA
+ NOME PAGINA CARICATA
Subito dopo la pagina continua normalmente. Dopo un po'
il visitatore cambia pagina e ne carica un'altra. Ancora
una volta la prima cosa che viene eseguita è l'inserimento
di un nuovo record nel database. Dopo un po' avrai il
database con un record per ogni caricamento pagina, per cui
se hai molte visite... hai molti record.
Per i calcoli dei tempi di permanenza devi interrogare il
database e fare una query mirata che calcoli la differenza
di tempo tra un record e l'altro, a parità di utente. Se
per dire io ho questi 4 record:
#4 151.33.161.122  -  18/09/03 10.03.41  -  PORTFOLIO.ASP
#3 151.33.161.122  -  18/09/03 10.03.27  -  CLIENTI.ASP
#2 151.33.161.122  -  18/09/03 10.03.15  -  CHISIAMO.ASP
#1 151.33.161.122  -  18/09/03 10.03.05  -  DEFAULT.ASP
relativi ad un utente che ha visto 4 pagine, quando
fai la differenza tra #1 e #2 ottienti il tempo di
permanenza su #1. Idem se fai #3-#2 ottieni il tempo
della pagina #2. L'ultima pagina è l'unica che non
hai modo di tracciare realmente: in genere la si chiama
pagina di uscita, cioè quella che nella sequenza è
messa all'ultimo posto (per quell'utente).
Puoi anche calcolare i tempi prima e poi salvarli (giocando
con le sessioni), ma comunque si tratta sempre di interrogare
un database quando devi poi fisicamente tener traccia dei
dati. Meglio quindi un log preciso di ogni accesso da cui
poi estrapolare quello di cui hai bisogno.
Nota2: se hai un sito con molti accessi al giorno ti dico
subito di non orientarti sul classico db Access. Dopo un
mese o due ti troverai un file di svariati mega, lento
e ingestibile
Nota2: valuta l'idea di salvare i dati su un file di testo
o un file XML (stessa cosa in fondo). Rapido e comodo, ma
devi poi saper lavorare con gli array

La tua risposta č molto esauriente e ti ringrazio, ma ti pongo
questa domanda: se io volessi sapere per quanto tempo un oggetto č 
visualizzato ad esempio un banner o qualsiasi altra cosa come potrei 
fare? il meccanismo č lo stesso o c'č un altro discorso da mettere in
piedi?
Ciao grazie.


 altro discorso da mettere in piedi?
In linea di massima un oggetto presente su una pagina ha lo stesso
tempo di visualizzazione di quella pagina. Ipotizzando di avere
un banner "sponsor12.gif" sulla pagina "clienti", se tu sai che la
pagina è stata "vista" per 8 ore in tutto il mese (sommando le
permanenze di tutti gli utenti) allora puoi dire che anche il
banner è stato visto per 8 ore. Questo in linea di massima
Altro discorso può essere quello di voler sapere quante volte è
stato "fisicamente" richiamato un oggetto sul browser: questo
perchè se io uso una connessione analogica (lenta) magari
apro un sito ma blocco il browser dopo un po' e non vedo il banner
che hai messo oltre il punto "di blocco". Il server non riceve
la chiamata al file e nel caricamento della pagina non figurerà
come un oggetto richiamato dal visitatore
Nota: il secondo paragrafo fa comunque riferimento alle informazioni
che trovi solo nel log-file del server e non ti può dare una idea
dei "tempi di visualizzazione". Può solo dirti "quante volte" un
oggetto è stato richiamato

 devi poi saper lavorare con gli array
La tua osservazione mi sembra corretta, XML non lo conosco, le sue 
caratteristiche permettono di gestire i DB? 
Se fosse cosě nel mio caso sarebbe una soluzione semplice da realizzare
come č altrettanto efficiente?


 le sue caratteristiche permettono di gestire i DB?
XML ti permette di gestire le informazioni strutturandole
in modo comodo (gerarchicamente). Inoltre un documento XML
permette la ricerca all'interno dell'albero, recuperando
informazioni in tempi ridottissimi.
Un file xml non lo leghi ad un db: è lui stesso il "db"
delle informazioni. Immaginalo come un file di testo in
cui raggruppi le cose ad albero:
+ automobili
| - marche
| | - Fiat
| | | - Panda
| | | - Stilo
| | | - Punto
| | | - [...]
Nell'albero puoi dire per eesempio "elencami tutti i
figli del nodo "marche" (Fiat, Lancia, Opel, ...) oppure
i figli del nodo Fiat (Panda, Stilo, ...). Immagina quindi
una cosa del genere per il tuo lavoro:
Va bene comunque se non hai da fare ricerche incrociate che
richiedano query complesse, perchè la struttura è versatile
ma non a livello di un db relazionale. Per il tuo scopo è
comunque più che sufficiente (per esempio io ho fatto un
sistema di statistiche completo solo in XML, il file con
tutti i dati pesa una nullità e le ricerce le fai in tempi
quasi nulli).
Va prima fatto uno studio su come salvare i dati e come
relazionarli, poi hai modo di capire se sia più comodo
un file XML o un db

 informazioni in tempi ridottissimi.
Hai ragione, ho scaricato un manuale di XML da internet ed è 
veramente uno strumento potentissimo e per questo bisogna conoscerlo
molto bene per sfruttare tutte le sue potenzialità.
Leggendo ho capito perchè è utile per la gestione dei DB, sicuramente
lo stesso numero di informazioni memorizzate tramite XML
risultano occupare fisicamente molto spazio in meno e anche
la ricerca dovrebbe essere velocissima, basta creare il giusto
schema gerarchico.
Per il sistema di memorizzazione che usa XML si possono fare
ordinamenti dei dati? A me sembra di no, se sbaglio correggimi.
CIAO!


 no, se sbaglio correggimi.
Č possibile farlo e tra l'altro in maniera immediata
e direi molto comoda. Basta fare una pagina che
carica i dati e specifica come ordinarli (cerca
info sui file .XSL, sono banalissimi).
Il problema č che una pagina fatta in questo modo
non č compatibile con tutti i browser. In particolare
gira su IE 6.0 senza problemi, piů o meno su IE
5.0 o IE 5.5, per nulla su Netscape e tutti gli
altri. Eccoti i dettagli in merito:
http://www.w3schools.com/xsl/xsl_browsers.asp
Certo se fai qualcosa per te e se tu usi solo IE 6.0
allora nessun problema.
--Alternativa ottimale--
Il file XML lo usi come base per i tuoi dati. Quando
vuoi "vederli" e fare i calcoli, lo carichi in
memoria spezzando le informazioni in array (trovi
molti tutorial online, cerca XML ASP o XML PHP per
capire come leggere i file XML ed estrapolarne i
contenuti). A quel punto, quando hai un array, ti
basta ordinarlo usando i criteri che preferisci.
Per ordinare un array mono-bidimensionale trovi
molti tutorial online (cerca ARRAY ASP SORT-SORTING)

 informazioni in tempi ridottissimi.
Non facciamola così facile!! Se gestire un log con Access è dannoso penso 
che gestirlo con informazioni strutturate XML è addirittura apocalittico...
I tempi di reazione di un file XML trattao in DOM, dato che ne sfrutti la 
struttura ad albero, sono troppo lunghi per poterlo usare in modo decente 
su un web server provocando colli di bottiglia nella gestione XML
Puoi creartelo una tantum partendo dai dati in DB ma non on-line
-- 
Using M2, Opera's revolutionary e-mail client: 
http://www.opera.com/m2/

 apocalittico...
Come dicevo, se si tratta di fare un log, che poi
è una sequenza di informazioni con una struttura
limitata al minimo (nel senso che è come salvare
una riga nuova in un file di testo, seza fare
operazioni particolari) la cosa diventa enormemente
più veloce se fatta via XML. Basta provare e fare
un po' di test. Io ho verificato il comportamento
del file per esempio con un sito di 20.000 pagine
viste al giorno. La differenza rispetto all'uso
di query su un db è enorme, non c'è paragone. Solo
in termini di apertura, inserimento e salvataggio
dati il file XML è già un vantaggio
È naturale che estrarre i dati successivamente può
essere molto più complicato: per dire "ricavare
quanti accessi ci sono stati tutti i giovedì del
mese a partire dalle 18.00, negli ultimi 4 mesi" è
una bella menata, mentre con una serie di tabelle
relazionate è un gioco da ragazzi

 dati il file XML h gi` un vantaggio
Scusa,
ma un DOM quando carica in memoria una struttura XML normalmente occupa
10 volte la dimensione del file XML:
Es. un file XML da 10 Kb occupa 100 Kb di memoria.
Oltre a questo devi tener conto del tempo di parsing del file.
Un sito con 20.000 page views al giorno per quanto pochi dati vuoi
inserire dovrebbe generare un file bello grosso. Non so csei utilizzi
tag o attributi ma comunque un centinaio di byte per record ci devono
stare il che porta a creare file da 2 Mb al giorno, che per essere
caricati in un DOMO richiedono 20 MB.
Lo storico quanto e' lungo?
Potresti postare il link al sito , mi piacerebbe vedere le performance
di questa cosa.


 storico quanto e' lungo?
No per il caso specifico dei 20.000 accessi non
ho realizzato un log (errore mio che non l'ho
specificato). Quanto dici è giusto, comunque per
tali accessi anche Access è inadeguato (sempre
per problemi di dimensioni). Nel caso specifico
del sito da 20.000 visite io registro i dati
divisi per categoria (browser, nazioni, pagine
e via dicendo) dopo aver fatto i conti. Per cui
non ho un file di "log" (come dicevo nell'altro
caso) ma una serie di dati già ordinati, in cui
ho per esempio
<browser unici=3 totali=910>IE 6.0</browser>
Tornando al problema iniziale, cioè il calcolo
del tempo di permanenza sulle pagine, il log
è fattibile tranquillamente se non ho un numero
elevatissimo di visite. Si tratta di capire la
mole di lavoro che ci sarebbe dietro. Comunque
su siti grossi Access non sarebbe utilizzabile
e si dovrebbe ripiegare su altro

 <browser unici=3 totali=910>IE 6.0</browser>
Questo per te e' XML?


 Questo per te e' XML?
Per sommi capi (per questo scopo) direi di si

 e si dovrebbe ripiegare su altro
Conosco uno sviluppatore che ha realizzato un sito di e-comemrce con
MsAccess e supporta fino a 200 visoitatori contemporanei. Non dipende
solo dalla tecnologia ma anche da come si usa.
CVD


 CVD
Guarda io ho scritto per dare qualche consiglio
basandomi su una esperienza personale. Non ho
competenze specifiche (con l'XML) tali da
"insegnare" qualcosa, ma un utente aveva dei dubbi
e io ho dato il mio parere. Non sto a discutere su
tutte le obiezioni che hai mosso (molte delle quali
giuste, sicuramente) perchè il mio scopo non era
quello di fare il professore, ma di fare una
chiacchierata in toni da bar.

 chiacchierata in toni da bar.
Siamo su it.lavoro.professioni.webmaster non su
it.hobby.bevitori.incalliti


 it.hobby.bevitori.incalliti
fantastico