Hejsan... Hej Jag har också för mig att det är viktigt att i samma ordning som du öppnar, så måste du också stänga(fast tvärs om) Om du inte sätter session.timeout i global.asa, utan sätter den i dokumentet som visar aktiva besökare istället så funkar det. Jag testade ju i och för sig bara lite snabbt med en grundversion av din kod utan timeout osv, och då funkade det. Men när jag provade att sätta timeout i global så verkade det som det inte fungerade längre, utan då byggdes det på med besökare bara, precis som du beskrev. Som sagt jag är inte säker, men testa! Du har dubletta procedurer. Kan vara det som strular: Tack för alla snälla svar! Löste det på ett finfint sätt UTAN global.asa!Global.asa
Har ett skumt problem... Har en global.asa-fil som ska leda till att aktiva användare visas på webbplatsen och när de lämnar sidan skall aktiva användare räknas ned med en.
Så här ser det ut i global.asa:
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Application("ActiveUsers") = 0
End Sub
Sub Session_OnStart
Session.Timeout = 10
Session("Start") = Now
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") + 1
Application.UnLock
End Sub
Sub Session_OnEnd
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") - 1
Application.UnLock
End Sub
SUB Application_OnStart
DIM Stats( 4, 100 )
Application( "Stats" ) = Stats
END SUB
SUB Session_OnEnd
Application.Lock
statistik = Application( "Stats" )
For i = 0 to UBOUND( statistik, 2 )
IF statistik( 0, i ) = Session.SessionID THEN
statistik( 0, i ) = ""
EXIT FOR
END IF
NEXT
Application( "Stats" ) = statistik
Application.UnLock
END SUB
</SCRIPT>
Men det bara byggs på med aktiva användare och det nollställs först när jag laddar upp global.asa på nytt.
Så här hämtar jag det till sidan:
<%response.write fontstuff %> <%= Application("ActiveUsers") %> aktiva användare.</B>
Kan någon direkt se vad - om något - som är fel... Själv tycker jag att det verkar vara helt rätt...
-suck-
/PeterSv: Global.asa
I global.asa så är det inte alltid som Session.On_End triggas,
det är en anledning till att den räknar upp hela tiden.
Jag tror att det finns en kurs under ASP i kurser & artiklar som tar upp
aktiva användare på siten.
Anna-KarinSv: Global.asa
t ex
On Session_OnStart
On Application_OnStart
On Application_OnEnd
On Session_OnEnd
Någonting sådant.Sv: Global.asa
Sv: Global.asa
<code>
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Dim Stats()
ReDim Stats(4, 100)
Application( "Stats" ) = Stats
Application("ActiveUsers") = 0
End Sub
Sub Session_OnStart
Session.Timeout = 10
Session("Start") = Now
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") + 1
Application.UnLock
End Sub
Sub Session_OnEnd
Dim Stats()
Application.Lock
Stats = Application( "Stats" )
For i = 0 to UBound(Stats, 2)
If Stats(0, i) = Session.SessionID Then
Stats(0, i ) = ""
Exit For
End If
Next
Application( "Stats" ) = Stats
Application("ActiveUsers") = Application("ActiveUsers") - 1
Application.UnLock
End Sub
</SCRIPT>
</code>Sv: Global.asa
Jag vet att flera olika onStart och onEnd för flera olika procedurer är fullt möjligt och också fungerar finfint... Det enda som ger problem är den där ActvieUsers...
Flera har påpekat just detta med timeouten... Frågan är bara: var lägger jag den istället???
Kallar på ActiveUsers så här:
<!--#include file ="users/users.asp"--> Det finns
<%response.write fontstuff %> <%= Application("ActiveUsers") %> aktiva användare.</B>
Inkluden users.asp innehåller bara kod för att hämta antal användare som finns i databasen.
Var ska nu Session.Timeout = 10 in?Sv: Global.asa
Du lägger session.timeout i topp på sidan som ska visa besökarna, och
sätt timout till 1 istället så uppdateras aktiva användare snabbare.
<code>
<%Option Explicit%>
<%Session.Timout = 1%>
</code>Sv: Global.asa
Nu funkar det som tåget - stadigt... Kolla in den på http://utv.odeumlink.com/portal/.
Om nån skulle vilja veta hur det är gjort eller vill ha de filer som behövs för att implementera denn global.asa-lösa version av ActiveUsersCount så är det bara att surfa till Testportalen och meddela mig detta.
Tack för alla bra förslag!