Newsgroup: it.comp.www.php
Titolo: misurare esattamente il tempo di permanenza

Ciao,
      sapete dirmi se con le sessioni posso fare in modo di misurare
esattamente il tempo che un visitatore passa sul mio sito?
Mi sembra che con le sessioni si possa fare in modo di sapere quando il
webserver chiude la connessione sul socket con il client; è giusto?
A me serve un modo preciso per calcolare questo tempo, non con il solito
trucchetto dei cambi pagina che segnano online i visitatori... anche perchè
i miei arrivano tutti da un proxy e quindi con lo stesso  IP :((
Sapete darmi qualche suggerimento?
Non so, ad esempio quando un visitatore arriva registro una sessione e metto
il sid nel db, poi quando questo se ne va viene richiamata una mia funzione
(non so se è fattibile) tipo onUnload dopo la quale poi ripesco il sid,
faccio la differenza tra il tempo attuale e quello in cui è stato registrato
il sid e metto quest'ultima nel DB. E' fantascienza?
Servirebbe una cosa tipo register_shutdown_function().
Grazie 1000!

 wrote in message
news:4wBD8.51433$US3.1...@twister1.libero.it...

Fantascienza ... (stato discusso qualche volta qui)
http://www.dopoil.com/sgg.php?q=tempo+visitatore
Script che fanno qualcosa di questo genere esistono (ma nessuno di questi
puo' essere perfetto): 
www.phpclasses.org/browse.html/package/544.html

 
Ehmm....Jurgen... la pagina indicata restituisce:
-------------------------------------------------
Warning: Undefined variable: group in /WWW/dopoil/sgg.php on line 36
Warning: Cannot add header information - headers already sent by (output 
started at /WWW/dopoil/sgg.php:36) in /WWW/dopoil/sgg.php on line 50
-------------------------------------------------
Enjoy, ;)
Luke650.

 started at /WWW/dopoil/sgg.php:36) in /WWW/dopoil/sgg.php on line 50
per risolvere il problema suggerirei:
http://www.dopoil.com/PHP/faq.php?cantAddHeader
:-)

 wrote in message
news:IGLD8.52462$US3.1...@twister1.libero.it...

Eh eh, sbagliato, per risolvere il problema: if (!isset($group))
ora va... avevo fatto una modifica senza testare il modulo da una altra
parte (solo chiamando la direttamente e sarebbe 
www.dopoil.com/sgg.php
).

 puo' essere perfetto): 
www.phpclasses.org/browse.html/package/544.html
si, ma tutti dovrebbero funzionare cambiando pagina...
A me non interessa sapere quanti utenti ci sono online, ma il tempo di
permanenza di un visitatore.
tnx!

 wrote in message
news:JQSD8.54436$5k4.1...@twister2.libero.it...

E dove sta la differenza? La technica e' la stessa e le due problamtiche
sono correlati...
Sarebbe come dire: Non mi interessa quanti soldi ho in banca, ma quanto e da
chi entra e esce: dall'estratto conto puoi arrivare alla somma. A te
interessa solo l'estratto conto i script proposti mettono tutto insieme per
fare anche la somma...
Saluti
Jurgen


non spiegare le cose come ai bambini, su! :)
A quanto ne so le sessioni sono l'unico modo per sapere quando il webserver
chiude il socket con il cliente e io volevo usarle per appunto misurare
l'intervallo di tempo tra apertura e chiusura. Non mi interessano altre
menate come sapere se quel socket č l'unico aperto o ce ne sono altri 100.
Una soluzione usando i frame ce l'avrei, ma chiedevo a VOI ESPERTI se
avevato affrontato in precedenza il problema.
E' inutile riscoprire ogni volta la ruota... meglio usare la ruota per fare
o scoprire altre cose ;)

l'intervallo di tempo tra apertura e chiusura. Non mi interessano altre
Non puoi saperlo, l'eventuale chiusura del socket non c'entra niente
con le sessioni. HTTP e' stateless il connection keepalive non basta 
per quello che vuoi fare tu.
Bonf

"bonf" <d...@sdf.rt> ha scritto nel messaggio
news:9tc0eus1kt45kk07f...@4ax.com...

beh, beh...
con le sessioni il server per identificare l'utente memorizza un file in
locale nel caso in cui questi ha i biscottini bruciati, no? :)
Quindi, ho letto da qualche parte, che in questo file ci mette un po di info
tra cui anche il File Descriptor del socket. Non potrebbe essere altrimenti
visto che in caso contrario il server non sarebbe in grado di distinguere
tra due client che escono dallo stesso gateway (in parole povere con lo
stesso IP)
Quindi... la sessione ha a che fare con i socket... nel momento in cui il
socket viene chiuso il file di sessione memorizzato in session.save_path
viene cancellato.
La mia domanda era: "E' possibile avere una funzione che viene richiamata
quando questo carissimo file viene cancellato?"
This is all,
thanx

 wrote in message
news:KJXD8.56624$5k4.1...@twister2.libero.it...


E come iniziato il thread: Tutto Fantascienza! ;-)
Non viene cancellato subito.
Dovresti _installare_ lato client l'intercettazione per la connessione, ma
anche cosi non sei 100% sicuro.
Tutti metodi si basano su una _interpretazione_ lato server, magari
aumentando la qualita' con piccoli trigger che vengono dal client (refresh
della pagina/subframe in automatico, aumentare interattivita' con testi
corti). Lo puoi fare con un semplice javascript refresh di un frame vuoto e
fare il rest del'analisi con un tool lato server (come WebTrends).
HTH
Saluti
Jurgen

quando questo carissimo file viene cancellato?"
Si' e no.
Su un server Linux, puoi registrare il socket ed associarlo ad un file e
a dei parametri, per esempio session_callback.php?COOKIE=123456. Pero' a
questo punto la funzione viene chiamata SEMPRE, cioe' se io navigo su 42
pagine Web, te la richiamero' 42 volte.
Come fai a sapere, atteso che me ne sono andato, che NON TORNERO'? Cioe'
che non sto leggendo con cura home.php e che fra 30 secondi diro' "Bello
questo sito, seguiamo questo chi_siamo.php?PHPSESSID=..." e riapriro' la
sessione?
L'unico (o quasi) modo e' mettere una immagine a caricamento molto lento
(non servono neanche le GD), e nel file che la fornisce inserire un hook
per un client abort (che significa che ho chiuso Explorer, o ho cliccato
altrove, o me ne sono andato in un'altra pagina dello stesso sito). Pure
cosi', riesci solo a diminuire la granularita' fino a forse 5-10 secondi
- sicche', qualitativamente sei al punto di prima :-(
Leonardo e il bello e il brutto dell'HTTP
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 E come iniziato il thread: Tutto Fantascienza! ;-)
ma cosa dici???
basta fare così:
paginainiziale.php:
----------
<h1 align=center>Attenzione!! prendi di corsa un cronometro<br>
e fallo partire <b>subito</b>!!</h1>
<form action=tempo.php method=get>
<p>quando hai finito la navigazione di questo sito,<br>
stoppa il cronometro e inserisci il tempo, in secondi,<br>
qua: <input type=text name=tempo>
<input type=submit name=Invia value=Invia>
</form></p>
------------
e poi, in tempo.php ti trovi il valore desiderato in $tempo!!!
non c'è trucco, non c'è inganno!!
:-)
ciao

quando questo carissimo file viene cancellato?"
Se anche ci fosse servirebbe a poco.
Bonf

www.softwareplanet.net
 wrote:
il protocollo http non è come un telnet che "finché vedi, il socket è vivo".
quando fai un telnet su una porta http, fai una GET e non appena finisce 
l'output, la connessione viene chiusa.
quindi il browser elabora l'output e te lo fa vedere, in genere a 
connessione già chiusa.
un file di sessione, puoi decidere a tavolino dopo quanto farlo scadere.
ciao

punkarruso wrote:

scusate il quote da cani!!

 wrote in message
news:MM4E8.58047$US3.1...@twister1.libero.it...

Come fai sapere il tempo che si legge effettivamente la pagina? E sempre
solo una stima, una interpretazione. Non una scienza esatta. E la ultima
pagina quando cambi sito. Non c'e' nullo di esatto (il thread si chiama:
misurare esattamente il tempo)...

 misurare esattamente il tempo)...
ti scrivi in C (o il linguaggio che preferisci) un browser che, quando va 
sul tuo sito, misura il tempo dal completamento della pagina.
quando l'applicazione non ha il focus, interrompe il conteggio.
alla chiusura della pagina o per condizioni da definire, spedisce il tempo 
al server.
non sai quanto legge, ma almeno quanto focus su pc ha avuto il tuo sito.
(magari si può anche fare scrivendo un plugin per il browser preferito).
poi, basta distribuirlo con un buon virus che sfrutta i bachi dell'outlook 
e il gioco è fatto.
ciao