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
%>
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
%>