<SCRIPT Language="VBScript" Runat="Server">
Sub Application_OnStart
Application("online") = 0
End Sub
Sub Session_OnStart
Dim oFe, oFso, oCtf
Dim iMaxOnline
Application.Lock
Application("online") = Application("online") + 1
Application.Unlock
Set oFe = Server.CreateObject("MSWC.Tools") [b]<- rad 16[/b]
If oFe.FileExists("maxonline.txt") Then
iMaxOnline = Server.Execute("maxonline.txt")
Else
iMaxOnline = 0
End If
Set oFe=nothing
Betyder det här att mitt webhotell inte stödjer MSWC.Tools?
Skulle chansa på att ditt webhotell inte har det installerat ja, har ofta vart så i liknande fall för mig att jag inte haft t.ex jmail eller nått installerat.
kan man använda sig utav en databas istället för en txt fil i det här fallet med global.asa?
Set oFe = Server.CreateObject("MSWC.Tools")
If oFe.FileExists("maxonline.txt") Then
iMaxOnline = Server.Execute("maxonline.txt")
Else
iMaxOnline = 0
End If
Set oFe=nothing
If Application("online") > iMaxOnline Then
Set oFso = Server.CreateObject("Scripting.FileSystemObject")
Set oCtf = oFso.CreateTextFile(Server.Mappath("maxonline.txt"), True)
oCtf.WriteLine(Application("online") & ". Rekordet sattes " & date)
oCtf.Close
Set oCtf=nothing
Set oFso=nothing
iMaxOnline = Application("online")
End If
Då har jag fastnat, som väntat :)
Jag får detta felmedelande, det står inte vad som är fel bara att det är fel
error '80020009'
root/global.asa, line 25
<SCRIPT Language="VBScript" Runat="Server">
Sub Application_OnStart
Application("online") = 0
End Sub
Sub Session_OnStart
Dim oFe, oFso, oCtf
Dim objConr, objRs
Dim strSql
Dim intMax
Application.Lock
Application("online") = Application("online") + 1
Application.Unlock
Set objConr = Server.CreateObject("ADODB.Connection")
objConr.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=; DATABASE= USER=; PASSWORD=; OPTION=3;"
strSql = "Select * from tblAktiva"
set objRs = objConr.execute(strSql)
if objRs("intMax") <> 0 then ' [b]rad 25[/b]
intMax = objRs("intMax")
else
intMax = 0
end if
objRs.close
Set objRs = nothing
if Application("online") > intMax then
objConr.execute("Update tblAktiva Set intMax=" &Application("online"))
end if
objConr.close
set objConr = nothing
Application.Lock
if Application("online") = 1 then
Application("stats") = "Just nu är det bara du inne på sidan"
else
Application("stats") = "Just nu är det " & Application("online") &" st inne på sidan"
end if
Application.Unlock
End Sub
Sub Session_OnEnd
Application.Lock
Application("online") = Application("online") - 1
Application.Unlock
End Sub
</SCRIPT>
Någon som orkar kolla igenom min kod och säga om jag gjort något galet
Äsch. Jag har ju glömt att skapa en post i databasen :)
En till fråga: Jag testade runt lite nu och märkte att det tar en fasligt lång tid för global.asa att förstå att en eller fler personer inte längre är på sidan.
Jag skapade 8 fönster som alla var på sidan samtidigt, då sivade skriptet att det var 8 pers på sidan men sedan när jag stängde ner alla förnster förutom ett stod det fortfarande 8 istället för 1?
kan man snabba på processen så global.asa kollar om folk försvunnit oftare?
Webbapplikationen har inte en aning om när folk stänger sina fönster, utan session.onend körs när sessionen avslutas, antingen genom att timeout inträffar (default är den inställd på 20 minuter) eller att man kallar på Session.Abandon.
Nu har jag lagt till session.TimeOut men jag har fortfarande samma fel: Det tar en evighet innan de som inte är inne på sidan försvinner som aktiv besökare.
Jag har satt session.TimeOut = 1 men det tar långt över en minut att få bort den aktiva besökaren. Jag testade att öppna 10 fönster så det vart 10 aktiva användare. Sedan stängde jag ner samtliga förnster förutom 1 som jag lät avvakta.. efter 15 minuter va det fortfarande 10 aktiva besökare?
Finns det något mer effektivt sätt jag kan lösa detta problem eller får jag leva med att det är på detta viset?
<SCRIPT Language="VBScript" Runat="Server">
Sub Application_OnStart
Application("online") = 0
End Sub
Sub Session_OnStart
Session.Timeout = 1
280 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe