Newsgroup: it.comp.www.php
Titolo: sessioni attive

Eccomi di nuovo!!
 
Avendo una tabella con memorizzati tutti gli id di sessione, ce modo di 
sapere quali sono le sessioni  realmente attive dove per sessione attiva si 
intende anche quella in cui l'utente sono 4 ore che sta fermo sulla stessa 
videata?
 
Grazie
 
ConteZero 
 


io ti direi che se l'utente sta fermo su una pagina la sessione scade 
dopo il tempo che hai impostato per farla scadere, quindi non è "attivo".
Allo stesso modo se se ne va senza un logout la sessione resta attiva 
fino alla sua scadenza impostata.
 
Poi puoi usare vari accrocchi per avere + informazioni, ma in larga 
parte sono accorgimenti client per cui non è che ti ci puoi basare sopra...
 
-- 
Z.

 intende anche quella in cui l'utente sono 4 ore che sta fermo sulla stessa 
 
O telefoni all'utente e gli chiedi se è ancora vivo, oppure bombardi il server con delle richieste ajax ogni tot secondi, così puoi tenere i tempi di vita della sessione molto più bassi... purtroppo http è stateless.
Conta che, a seconda del sito/servizio che devi fare, se un'utente naviga su più schede ogni scheda ti bombarda il server, quindi 2 schede aperte = doppio di richieste.
 
 
Considera di basarti solo sui refresh di pagina o far iniziare il _bombardamento_ solo dopo una determinata (in)azione, tipo 30 secondi di inattività del mouse/tastiera (con js dovrebbe essere facile fare il detect)

 parte sono accorgimenti client per cui non è che ti ci puoi basare sopra...
 
Alla fine, dopo vari giri di opinione, sono abbastanza d'accordo. Mi
domandavo se ce modo di verificare in maniera rapida se una sessione è
scaduta o no. Oppure devo fare io i conti con i tempi?
 
ConteZero
 
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 scaduta o no. Oppure devo fare io i conti con i tempi?
 
Dipende da cosa usi direi, e come.
Qua puoi avere un'idea generica di come accedere:
http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php
, 
ma non è una roba standardissima, le sessioni possono essere memorizzate 
in modi diversi, e se usi framework la cosa si complica ancora d+. In 
php 5.4 so che hanno aggiunto il session status, ma non so dirti cosa 
faccia, ne se sia utile al tuo caso, magari buttaci un occhio però.
 
In definitiva cmq php non è java con le jsession tutte belle standard... 
qualsiasi accrocchio tu metta in piedi...è un accrocchio :D
Diciamo è una cosa che su php non è molto fattibile.
 
-- 
Z.

L'unica cosa che mi viene in mente sono i websocket di HTML5
 
certo sono sempre lato client (almeno l'attivazione), ma almeno possono 
essere comandati lato server.
 
stesso discorso per il thread precedente sui socket.
 
unico neo, non tutti i browser sono gia compatibili con html5 ed essendo 
questo ancora in draft � soggetto a possibili cambiamenti.
 
Ciao
 
 
Il 28/08/2012 16:23, ConteZero ha scritto:


Ringrazio tutti per le indicazioni ma a questo punto mi viene una domanda: 
ma non esiste una qualcosa per fare un controllo semplice semplice del tipo:
 
if session = Attiva
 
    tutto ok
else
    fai quel che serve per sessione non attiva
 
end
 
Questo per fare un ciclo che periodicamente mi controllo lo stato delle 
sessioni
 
Grazie
ConteZero 
 

 if session = Attiva
 
Dipende tutto da cosa intendi tu per 'sessione attiva'.
HTTP � stateless, una volta che il server ti ha fornito la pagina
si dimentica di te (approssimando).
A causa di ci� esistono vari 'accrocchi' per inventare le sessioni
dove non esistono.
 
-- 
ValeRyo 
 
 


Bisogna definire "attiva", comunque se salvi le sessioni nel DB e aggiorni un campo "ultima azione" ogni volta che l'utente clicca puoi fare una query sul sessionId e il tempo che a te interessa per definire una sessione attiva.
 
E comunque e' una supposizione perche' come gia' specificato, una volta fornita la pagina per il webserver il lavoro e' finito, a meno che non tu non tenga aperta la connessione con qualche accrocchio...
 
Ma il punto e' capire perche' ti serve sapere le sessioni attive, magari esiste un approccio diverso al problema.
 
Se e' solo statistico credo che mysql + query sul tempo sia piu' che sufficiente per avere gli utenti contemporanei, se invece e' necessario per la tua aplicazione penseri atecnologie deiverse, che so meteor nodejs
 
J.

Il 03/09/2012 17:57, ConteZero ha scritto:
 > ma non esiste una qualcosa per fare un controllo semplice
 > semplice del tipo:
 >
 > if session = Attiva
 >
 >     tutto ok
 
Puoi usare un sistema "push", ad esempio includendo nella pagina un 
piccolo iframe che punta ad una seconda pagina e che si ricarica (via 
JavaScript e/ tag meta) ogni tot tempo.
Ovviamente l'iframe quando si ricarica deve anche inviare l'indicazione 
di quale pagina lo contiene, informazione che si può generare sia lato 
client (con "parent") che direttamente da PHP, per valutare se l'utente 
sta navigando o se è fermo sulla stessa pagina.
 
E' un accrocchio (come tutti i tentativi di rendere HTTP stateful ;) ) 
ma dovrebbe soddisfare le tue esigenze, escludendo il "semplice semplice".