Fejl ved opdatering
Nedenstående script bliver opdateret hvert 10 sek. ved hjælp af et javascript. Det fungerer fint, sålænge kun en bruger kører scriptet, men når to brugere er på samtidig, bliver der på et eller andet tidspunkt returneret en null-værdi til den ene bruger.Jeg tror, at jeg har fundet en forklaring på problemet. Som sagt, så fejler javascriptet kun, når det bliver kørt af mere end én computer. Jeg har lagt mærke til, at opdateringsfrekvensen, som er sat til 10000, ikke altid er præcis 10 sekunder, men sommetider 1 til 2 sekunder mere. Dermed vil opdateringstidspunktet på 2 computere på et eller andet tidspunkt blive det samme, eller næsten det samme, og det vil vel betyde, at der på den ene computer bliver foretaget et databasekald samtidig med, at den anden computer er i gang med at afvikle et tilsvarende kald. Det medfører så, at der bliver returneret en null-værdi fra det ene script med deraf følgende fejl i javascript.
Hvis jeg sætter opdateringstiden til f.eks. 20 sekunder, så kører scriptene meget længere uden at fejle, men så er sandsynligheden for at de to scripts "rammer" hinanden jo også mindre.
Jeg kan ikke få javascriptet til at opdatere igen efter fejlen. Derfor er spørgsmålet: Kan jeg lægge noget ind i asp-scriptet, så jeg undgår fejlen?
Koden til scriptet kommer her.
<%
response.expires=-1
response.contenttype="text/xml"
on error resume next
Set Conn = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("mindb.mdb")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MdbFilePath & ";"
strSQL = "SELECT * FROM tblTurbData ORDER by AccessTimeStamp desc"
set rs = conn.execute(strSQL)
If err <> 0 then
response.write(err.description)
Set rs = Nothing
Set Conn = Nothing
Else
If Not rs.eof then
RotRpm = rs("RotRpm")
GenRpm = rs("GenRpm")
TurbClock = rs("Now()")
GearTmp = rs("GearTmp")
Gen1Tmp = rs("Gen1Tmp")
Gen2Tmp = rs("Gen2Tmp")
Pwr = rs("Pwr")
Status = rs("Status")
Frq = rs("Frq")
Rvolt = rs("Rvolt")
Svolt = rs("Svolt")
Tvolt = rs("Tvolt")
Rcurr = rs("Rcurr")
Scurr = rs("Scurr")
Tcurr = rs("Tcurr")
RctPwr = rs("RctPwr")
EngGen1Sub = rs("EngGen1Sub")
EngGen2Sub = rs("EngGen2Sub")
SubIaltkW = EngGen1Sub+EngGen2Sub
EngGen1Tot = rs("EngGen1Tot")
EngGen2Tot = rs("EngGen2Tot")
TotIaltkW = FormatNumber(EngGen1Tot+EngGen2Tot,0)
ProdTidGen1Sub = rs("ProdTidGen1Sub")
ProdTidGen2Sub = rs("ProdTidGen2Sub")
ProdTidSubIaltTimer = ProdTidGen1Sub+ProdTidGen2Sub
ProdTidGen1Tot = rs("ProdTidGen1Tot")
ProdTidGen2Tot = rs("ProdTidGen2Tot")
ProdTidTotIaltTimer = ProdTidGen1Tot+ProdTidGen2Tot
YawTim = rs("YawTim")
Wind = rs("Wind")
AmbTmp = rs("AmbTmp")
'Vindrose
interval = Cint(rs("YawTim"))
if interval > 10 and interval <= 34 then
billede = "images/kompasrose_NNE.gif"
elseif interval > 34 and interval <= 56 then
billede ="images/kompasrose_NE.gif"
elseif interval > 56 and interval <= 79 then
billede ="images/kompasrose_ENE.gif"
elseif interval > 79 and interval <= 101 then
billede ="images/kompasrose_east.gif"
elseif interval > 101 and interval <= 124 then
billede ="images/kompasrose_ESE.gif"
elseif interval > 124 and interval <= 146 then
billede ="images/kompasrose_SE.gif"
elseif interval > 146 and interval <= 169 then
billede ="images/kompasrose_SSE.gif"
elseif interval > 169 and interval <= 191 then
billede ="images/kompasrose_south.gif"
elseif interval > 191 and interval <= 214 then
billede ="images/kompasrose_SSW.gif"
elseif interval > 214 and interval <= 236 then
billede ="images/kompasrose_SW.gif"
elseif interval > 236 and interval <= 259 then
billede ="images/kompasrose_WSW.gif"
elseif interval > 259 and interval <= 281 then
billede ="images/kompasrose_west.gif"
elseif interval > 281 and interval <= 304 then
billede ="images/kompasrose_WNW.gif"
elseif interval > 304 and interval <= 326 then
billede ="images/kompasrose_NW.gif"
elseif interval > 326 and interval <= 349 then
billede ="images/kompasrose_NNW.gif"
elseif interval > 349 or interval <= 11 then
billede ="images/kompasrose_north.gif"
end if
response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.write("<winddata>")
response.write("<rotrpm>Omdrejninger "&RotRpm&" pr. min.</rotrpm>")
response.write("<genrpm>Omdrejninger "&GenRpm&" pr. min</genrpm>")
response.write("<turbclock>Vindmølleur "&Now()&"</turbclock>")
response.write("<geartmp>Temp. "&GearTmp&" °C</geartmp>")
response.write("<status>Status "&Status&" V</status>")
response.write("<gen1tmp>Temp. store generator "&Gen1Tmp&" °C</gen1tmp>")
response.write("<gen2tmp>Temp. lille generator "&Gen2Tmp&" °C</gen2tmp>")
response.write("<pwr>Nuværende produktion "&Pwr&" kW</pwr>")
response.write("<frq>Frekvens "&Frq&" Hz</frq>")
response.write("<rvolt>R: "&Rvolt&" V</rvolt>")
response.write("<svolt>S: "&Svolt&" V</svolt>")
response.write("<tvolt>T: "&Tvolt&" V</tvolt>")
response.write("<rcurr>R: "&Rcurr&" A</rcurr>")
response.write("<scurr>S: "&Scurr&" A</scurr>")
response.write("<tcurr>T: "&Tcurr&" A</tcurr>")
response.write("<rctpwr>Reaktiv effekt "&RctPwr&" kW</rctpwr>")
response.write("<enggen1sub>Store generator "&EngGen1Sub&" kWh</enggen1sub>")
response.write("<enggen2sub>Lille generator "&EngGen2Sub&" kWh</enggen2sub>")
response.write("<subialtkw>I alt "&SubIaltkW&" kWh</subialtkw>")
response.write("<enggen1tot>Store generator "&EngGen1Tot&" kWh</enggen1tot>")
response.write("<enggen2tot>Lille generator "&EngGen2Tot&" kWh</enggen2tot>")
response.write("<totialtkw>I alt "&TotIaltkW&" kWh</totialtkw>")
response.write("<prodtidgen1sub>Store generator "&ProdTidGen1Sub&" timer</prodtidgen1sub>")
response.write("<prodtidgen2sub>Lille generator "&ProdTidGen2Sub&" timer</prodtidgen2sub>")
response.write("<prodtidsubialttimer>I alt "&ProdTidSubIaltTimer&" timer</prodtidsubialttimer>")
response.write("<prodtidgen1tot>Store generator "&ProdTidGen1Tot&" timer</prodtidgen1tot>")
response.write("<prodtidgen2tot>Lille generator "&ProdTidGen2Tot&" timer</prodtidgen2tot>")
response.write("<prodtidtotialttimer>I alt "&ProdTidTotIaltTimer&" timer</prodtidtotialttimer>")
response.write("<vindrose><img src='"&billede&"'></vindrose>")
response.write("<vindretning>Vindretning "&YawTim&" °</vindretning>")
response.write("<vindstyrke>Vindstyrke "&Wind&" m⁄s</vindstyrke>")
response.write("<udetemperatur>Udetemperatur "&AmbTmp&" °C</udetemperatur>")
response.write("</winddata>")
Else
response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.write("<winddata>")
response.write("<rotrpm>Henter data..</rotrpm>")
response.write("<genrpm>Henter data..</genrpm>")
response.write("<turbclock>Henter data..</turbclock>")
response.write("<geartmp>Henter data..</geartmp>")
response.write("<status>Henter data..</status>")
response.write("<gen1tmp>Henter data..</gen1tmp>")
response.write("<gen2tmp>Henter data..</gen2tmp>")
response.write("<pwr>Henter data..</pwr>")
response.write("<frq>Henter data..</frq>")
response.write("<rvolt>Henter data..</rvolt>")
response.write("<svolt>Henter data..</svolt>")
response.write("<tvolt>Henter data..</tvolt>")
response.write("<rcurr>Henter data..</rcurr>")
response.write("<scurr>Henter data..</scurr>")
response.write("<tcurr>Henter data..</tcurr>")
response.write("<rctpwr>Henter data..</rctpwr>")
response.write("<enggen1sub>Henter data..</enggen1sub>")
response.write("<enggen2sub>Henter data..</enggen2sub>")
response.write("<subialtkw>Henter data..</subialtkw>")
response.write("<enggen1tot>Henter data..</enggen1tot>")
response.write("<enggen2tot>Henter data..</enggen2tot>")
response.write("<totialtkw>Henter data..</totialtkw>")
response.write("<prodtidgen1sub>Henter data..</prodtidgen1sub>")
response.write("<prodtidgen2sub>Henter data..</prodtidgen2sub>")
response.write("<prodtidsubialttimer>Henter data..</prodtidsubialttimer>")
response.write("<prodtidgen1tot>Henter data..</prodtidgen1tot>")
response.write("<prodtidgen2tot>Henter data..</prodtidgen2tot>")
response.write("<prodtidtotialttimer>Henter data..</prodtidtotialttimer>")
response.write("<vindrose>Henter data..</vindrose>")
response.write("<vindretning>Henter data..</vindretning>")
response.write("<vindstyrke>Henter data..</vindstyrke>")
response.write("<udetemperatur>Henter data..</udetemperatur>")
response.write("</winddata>")
End If
rs.close
set rs = nothing
conn.close
Set Conn = Nothing
End If
on error goto 0
%>