Newsgroup: it.comp.www.asp
Titolo: Domanda su Session Object

Salve a tutti,
ho letto spesse volte sull'utilizzo della variabile session
per l'intercambio fra pagine diverse per una stessa sessione
utente. Quello che pero' ho capito e' che questa variabile
non muore alla fine della sessione dell'utente..
Come mai? Non c'e' un gestore dell'evento di fine sessione
utente in base al quale si possa rimuovere la variabile session?
E poi quale utilita' doveva avere il timeut della session?
Grazie a tutti
Elena

La variabile muore se termini la sessione (se no perchè dovrebbe chiamarsi
session)
La sessione muore se chiudi il browser.
la sessione muore dopo un periodo di inattività (timeout)
:)

:

Si questo lo so...ma quello che non ho capito e' ad esempio
nel conteggio contemporaneo dei visitatori...c'e' il problema
che quando il client abbandona, la sessione non si chiude se non
dopo il timeout e quindi non si aggiornano i viisitatori in 
tempo reale

 tempo reale
Però l'unico modo che ha il server per sapere che il client non è più
collegato è aspettare il timeout: il client non si preoccupa ogni volta che
lascia un sito di notificarlo al sito in oggetto!!!
--------------------------------------------------
Dott. Giorgio Parmeggiani
Consulente software
http://www.gipasoft.net
--------------------------------------------------


Ok compreso :)
Elena

 wrote in message
news:Xns90749F9E837C...@0.0.0.1...


 wrote in message
news:Xns90749F9E837C...@0.0.0.1...

tutta internet funziona così..
credi che una sessione TCP "esista"? è solo una questione di timeout..

E poi quale utilita' doveva avere il timeut della session?
Quello di eliminare l'oggetto dalla memoria, dopo un certo periodo.

:

Quindi se un utente sta sul sito per un tempo maggiore del timeout
la variabile muore comunque? O il contatore di timeout parte dopo
l'idle del client (cioe' quando il client non fa richieste)?
Elena

client lascia la pagina.
Non è proprio vero.
Ovviamente, se l'utente chiude il browser o cambia sito, si deve attendere
il timeout della sessione.
Ma esiste il comando session.abandon, che forza la chiusura della sessione.
Credo che combinando javascript lato client e questa session.abandon, si
possa controllare la cosa, ma non ci metto la mano sul fuoco

l'idle del client (cioe' quando il client non fa richieste)?
Non c'e' modo di sapere se il client non fa + richieste.
Sapere che il client non fa + richieste significa mantenere uno stato
per quel client e quel server e questo non e' possibile.
Il web e' "stateless" ("senza stato") per definizione.
Immagina cosa significherebbe mantenere lo stato di migliaia/milioni
di client collegati, specie quando i web server sono + di uno e quindi
le richieste vengono smistate tra essi.
Il timeout e' quello che si assume come tempo limite di esistenza
della sessione.  Va calibrato bene proprio per evitare che un utente
sia collegato per piu' di tot minuti.

Esatto.
Esatto relativo all'idle? o relativo al fatto che la variabile muore cmq 
dopo tempo di timeout anche se l'utente e' ancora connesso?

possa controllare la cosa, ma non ci metto la mano sul fuoco
Aspetta, Session.Abandon deve essere forzato, comunque, dall'utente
(mediante, per esempio, un pulsantino sulla pagina che indica il "log
out").  Il problema e' che il server, senza alcun intervento esterno,
non puo' accorgersi che l'utente non e' piu' collegato e quindi
distruggere la variabile Session, perche' significherebbe mantenere
uno stato per quell'utente.  L'unica cosa sfruttabile e' un time-out.

dopo tempo di timeout anche se l'utente e' ancora connesso?
L'idle non e' calcolabile dal server.  Non mantiene informazioni sul
client connesso.  La variabile muore dopo il timeout anche se l'utente
e' ancora connesso.

: 

Allora esiste un qualcosa che forzi la chiusura della sessione...
Si potrebbe sfruttare qualche evento Javascript (che ancora devo
cercare) per inviare al server il session abandon...
Personalmente penso che la soluzione timeout sia assolutamente
improponibile e mi meraviglio come possa ancora al giorno d'oggi 
sussistere...
Pensiamo al fatto di un negozio online...il cliente vede il catalogo
ad un certo punto la sessione finisce...e io che avevo basato tutte
le mie variabili sulla sessione se ne vanno a farsi benedire e devo
trovare rimedi...naaa non si puo' fare....
Ora cerco qualche evento interessante in JavaScript..
Elena

Per salvare informazioni utili esistono i databases, e uniti ai cookies,
puoi riprendere il carrello dell'utente, anche a distanza di giorni o di
mesi.
JavaScript č una soluzione molto, molto piů precaria.
Ciao!
Paolo
PS: e non dire che non ti piacciono i cookies, perchč senza di quelli addio
sessioni.

trovare rimedi...naaa non si puo' fare....
Certo che si puo' fare.
Il time-out deve essere impostato, come gia' detto negli altri
messaggi, ad un valore tanto alto da evitare questo tipo di problema.
Si puo', per esempio, informare l'utente che la sua transazione deve
essere conclusa in 10 minuti.