webForumDet fria alternativet

Har jag låst på rätt ställen?

ASP

4 svar · 151 visningar · startad av Harback

Medlem sedan juni 2001206 inlägg
Frågan#1

Hejsan. Använder mig av Vides statistik (fungerar kanon) men jag tyckte att man borde låsa applikationerna i global.asa innan de ändras. Har jag rätt?

Så här:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../dbhifi.mdb") & ";" & " Jet OLEDB:Database Password=" & xxxxx

  strIp = Request.ServerVariables("REMOTE_HOST")
  strKlient = Request.ServerVariables("HTTP_USER_AGENT")
  dtmDatum = Now
  strReferer = Request.ServerVariables("HTTP_REFERER")

  SQL = "INSERT INTO logg (dtm, ip, klient, referer)" &_
  " VALUES (#" & dtmDatum & "#, '" & strIp & "', '" & strKlient & "', '" & strReferer & "')"
  objConn.Execute(SQL)

  objConn.Close
  Set objConn = Nothing

  Application.Lock
  Application("intActive_users") = Application("intActive_users") + 1
  Application.UnLock
End Sub

Sub Session_OnEnd
  Application.Lock
  Application("intActive_users") = Application("intActive_users") - 1
  Application.UnLock
End Sub

Sub Application_OnStart
  Application("intActive_users") = 0
End Sub
</SCRIPT>

Är det något mer ställe som det är bra att låsa? När man skriver till databasen kanske?

En annan fråga. Session_OnEnd fungerar ju lite sådär, går det att lösa på annat vis att visa hur många som är på sidan?

Tacksam för svar.

------------------
mvh
Harback
Hifiguiden.nu

[Redigerat av Harback den 10 dec 2001]

[Redigerat av Harback den 10 dec 2001]

Medlem sedan dec. 19998 577 inlägg
#2

Du behöver bara låsa application när du vet att någon klient har möjligheten att ändra. Så du behöver inte ändra när du skriver till databasen, den använder ju inte ens application, och ingen klient skulle i sånna fall ändrat applications värde.

En annan fråga. Session_OnEnd fungerar ju lite sådär, går det att lösa på annat vis att visa hur många som är på sidan?

Inte på något smidigt sätt.

------------------
Mostly Harmless

Medlem sedan juni 2001206 inlägg
#3

Okej, så jag har låst på rätt ställen då eller?

Det går inte att lösa mitt andra problem med IsClientConnected på någe vis? Bara tänkte att kanske...

------------------
mvh
Harback
Hifiguiden.nu

Medlem sedan dec. 19998 577 inlägg
#4

Jo, du kan använda andra metoder, men alla andra metoder betyder att du måste ha en includefil på varje sida. Vilket är lite krångligt...

------------------
Mostly Harmless

Medlem sedan mars 20002 836 inlägg
#5

En annan sak man ska tänka på är att ha subbarna i ordning, dvs i den ordning som de körs:

Sub Application_OnStart
'## -- kod som körs när siten startas --
End Sub

Sub Session_OnStart
'## -- kod som ska köras när en ny besökare kommer till siten --
End Sub

Sub Session_OnEnd
'## -- kod som ska köras när besökarens session timas ut --
End Sub

Sub Application_OnEnd
'## -- kod som ska köras när siten stoppas --
End Sub

Om ordningen inte stämmer kan session_onend ibland inte triggas, eller, ofta har jag märkt att det beror just på att ordningen är fel.
Har hittils inte haft några problem just med att Session_OnEnd inte triggas när jag har dessa subbar i rätt ordningsföljd alltså i den ordning som de ska köras.

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

[Redigerat av PatrikB den 11 dec 2001]

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)