Conteggio utenti online, problema al minuto 00

miss

Nuovo Utente
25 Gen 2007
20
0
0
Ciao a tutti, sto cercando di correggere un ottimo script che ho trovato in rete per il conteggio reale degli utenti online. Lo script è qui:
http://script-asp.blogspot.com/2009...gli-utenti.html
Ogni tot minuti l' utente, con una richiesta asincrona fatta con ajax, comunicherà al nostro server, di essere ancora sul sito. E quando segnala la sua presenza, salverà il minuto della sua segnalazione....a questo punto, se l'ultima segnalazione di un utente dovesse essere più vecchia del numero di minuti che io imposto, elimino semplicemente l'utente dalla mia variabile che contiene gli utenti reali sul sito.

Lo script ha però un bug, cioè si perde la presenza al passaggio dal minuto 59 al minuto 00. Chi può aiutarmi a risolvere questo problema ?
La parte "incriminata" dovrebbe essere questa:


<%
if application("user")<>"" and not IsNull(application("user")) then
'per prima cosa elimino gli utenti che non sono più online

minuti_scadenza=1 'qui imposto i minuti dopo i quali voglio eliminare lo user dalla tabella degli utenti online
minuti_attuali=minute(now())
dividi_application=split(application("user"), "|")

'conto il numero degli utenti online realmente
cont=0
for a=0 to Ubound(dividi_application)-1
cont=cont+1
next
%>
<% response.write ("n=" & cont &"&")%>

<%
a=0
for a=0 to Ubound(dividi_application)
if dividi_application(a)<>"" then
dividi_utente=split(dividi_application(a), "---")
for b=0 to Ubound(dividi_utente)
id_utente=dividi_utente(0)
minuti_utente=dividi_utente(1)
next
'controllo i minuti, e se la differenza tra i minuti attuali e quelli della variabile sono maggiori di quelli impostati, elimino lo user
if minuti_utente<minuti_scadenza then minuti_utente=minuti_utente+60
if minuti_attuali<minuti_scadenza then minuti_attuali=minuti_attuali+60
if minuti_attuali-minuti_utente>minuti_scadenza then
application("user")=replace(application("user"), "|"&id_utente&"---"&minuti_utente&"", "")
end if

end if
next


a=0
'prima controllo se non sono già dentro alla variabile
for a=0 to Ubound(dividi_application)
if dividi_application(a)<>"" then
dividi_utente=split(dividi_application(a), "---")
for b=0 to Ubound(dividi_utente)
id_utente=dividi_utente(0)
minuti_utente=dividi_utente(1)
next

end if
next
end if
%>
 

daviduccio

Moderatore
5 Ago 2004
1.114
0
0
35
Sicilia
www.daviduccio.it
Io non vorrei dire una cretinata, ma così fatto lo script non mi sembra molto logico in quanto viene salvato nella variabile solo il minuto della richiesta e non tutta la data. Per aggravare tutto, il controllo viene fatto sui minuti di Now, quindi a occhio e croce hai un problema quando sei a cavallo tra 2 ore.

Io modificherei tutto salvando l'intero valore di Now e facendo un semplice Datediff tra il valore salvato ed il Now attuale.

Ciao.
 

miss

Nuovo Utente
25 Gen 2007
20
0
0
risolto :)
anche con il data diff il problema persisteva...c' era una riga in più che mandava in crisi tutto.