Hallo Liste,
ich habe bei meinem Provider auf dem Server einen kleinen Immobilienmarkt
laufen. Als DB benutze ich Access 97. Nun kommt es in letzter Zeit h�ufiger
vor, dass der Server h�ngt. Als Antwort auf meine Anfrage hie� es, das der
Server stabil laufen w�rde, nur der Aufbau meiner global.asa sowie meine DB
Scripte w�ren nicht f�r Last und parallel-Nutzung geeignet.
Die global.asa nutze ich nur daf�r den ersten Besucher des Tages dazu zu
missbrauchen einige updates in der DB duchzuf�hren. (Script auf Server um DB
zu Updaten ist bei Provider nicht m�glich)
Nun meine Frage, bin ich zu bl�d so eine global.asa zu coden? Kann man das
noch optimieren?
In dankbarer Erwartung
Matthias
************* CODE *****************
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
Application("myAktuellesDatum") = "16.07.01"
End Sub
Sub Session_OnStart
Application.Lock
Application("myAnzahlAktuelleUser") =
Application("myAnzahlAktuelleUser") + 1
Application.Unlock
Session("myAktuellesDatum") = Date()
IF NOT CDate(Session("myAktuellesDatum")) =
CDate(Application("myAktuellesDatum")) THEN
Application("myAktuellesDatum") = Session("myAktuellesDatum")
strConnection = "Driver={Microsoft Access Driver (*.mdb)};DBQ="
strConnection = strConnection & Server.MapPath("meine.mdb")
strConnection = strConnection & ";DriverId=25;FIL=MS
Access;MaxBufferSize=512;PageTimeout=5;"
set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.Open strConnection
' Oeffnen Recordset, Anzahl der Wohnungen auslesen
sqlSelect = "SELECT COUNT(*) FROM tOBJEKTEINTRAG"
Set MyRS = MyConn.execute(sqlSelect)
Application("myAnzahlObjekte") = MyRS(0)
' Schliessen Recordset
MyRS.Close
Set MyRS = Nothing
' Oeffnen Recordset, Anzahl der Kunden auslesen
sqlSelect = "SELECT COUNT(*) FROM tKUNDEN"
Set MyRS = MyConn.execute(sqlSelect)
myFeldgroesse = MyRS(0) - 1
Application("myAnzahlKunden") = myFeldgroesse + 1
ReDim myFeld(myFeldgroesse,5)
' Schliessen Recordset
MyRS.Close
Set MyRS = Nothing
sqlSelect = "SELECT DB_KUNDENID, DB_INTERNOBJEKTLAUFZEITDEAKTIVIERUNG,
DB_INTERNOBJEKTLAUFZEITLOESCHUNG, DB_GESCHLECHT, DB_NAME, DB_EMAIL FROM
tKUNDEN"
Set MyRS = MyConn.execute(sqlSelect)
' Feld fuellen mit Daten der Kunden
DO WHILE NOT MyRS.EOF
myFeld(x,0) = MyRS("DB_KUNDENID")
myFeld(x,1) = MyRS("DB_INTERNOBJEKTLAUFZEITDEAKTIVIERUNG")
myFeld(x,2) = MyRS("DB_INTERNOBJEKTLAUFZEITLOESCHUNG")
myFeld(x,3) = MyRS("DB_GESCHLECHT")
myFeld(x,4) = MyRS("DB_NAME")
myFeld(x,5) = MyRS("DB_EMAIL")
x = x + 1
MyRS.MOVENEXT
LOOP
' Schliessen Recordset
MyRS.Close
Set MyRS = Nothing
For x = 0 to UBound(myFeld)
sqlDelete = "DELETE FROM tOBJEKTEINTRAG WHERE DB_KUNDENID=" &
myFeld(x,0)
& " AND DB_INTERNAENDERUNGDATUM <= #" & getDatum(Date()-myFeld(x,2)) & "#"
'Response.Write(sqlDelete & "<br>")
MyConn.execute(sqlDelete)
Next
For x = 0 to UBound(myFeld)
sqlSelect = "SELECT DB_KUNDENID, DB_INTERNAENDERUNGDATUM,
DB_INTERNOBJEKTSICHTBAR FROM tOBJEKTEINTRAG WHERE DB_KUNDENID=" &
myFeld(x,0)
Set MyRS = MyConn.execute(sqlSelect)
IF NOT MyRS.EOF AND NOT MyRS.BOF THEN
myKundenID = MyRS("DB_KUNDENID")
myInternAenderungsdatum =
MyRS("DB_INTERNAENDERUNGDATUM")
myInternObjektSichtbar =
MyRS("DB_INTERNOBJEKTSICHTBAR")
' Schliessen Recordset
MyRS.Close
Set MyRS = Nothing
IF NOT myInternAenderungsdatum <
getDatum(Date()-myFeld(x,1)) AND NOT
myInternObjektSichtbar = 0 THEN
sendMail
myFeld(x,5),"[EMAIL PROTECTED];[EMAIL PROTECTED]","IMSAX.NET
Objektdeaktivierung",myMailbody(myFeld(x,3),myFeld(x,4))
END IF
ELSE
' Schliessen Recordset
MyRS.Close
Set MyRS = Nothing
END IF
sqlUpdate = "UPDATE tOBJEKTEINTRAG SET DB_INTERNOBJEKTSICHTBAR
= 0 WHERE
DB_KUNDENID=" & myFeld(x,0) & " AND DB_INTERNAENDERUNGDATUM < #" &
getDatum(Date()-myFeld(x,1)) & "# AND NOT DB_INTERNOBJEKTSICHTBAR = 0"
MyConn.execute(sqlUpdate)
Next
' Schliessen Connection
MyConn.Close
Set MyConn = Nothing
END IF
End Sub
Sub Session_OnEnd()
Application.Lock
Application("myAnzahlAktuelleUser") =
Application("myAnzahlAktuelleUser") - 1
Application.Unlock
End Sub
'*** Funktionen um deutsches Datumsformat in amerikanisches Datumsformat zu
konvertieren ***
Function getDatum(myDatum)
myTag = getFormatDatum(day(myDatum))
myMonat = getFormatDatum(month(myDatum))
myJahr = year(myDatum)
getDatum = myMonat & "/" & myTag & "/" & myJahr
End Function
Function getFormatDatum(myFormatDatum)
IF LEN(myFormatDatum) = 1 THEN
getFormatDatum = 0 & myFormatDatum
ELSE
getFormatDatum = myFormatDatum
END IF
End Function
'*** Ende // Funktionen um deutsches Datumsformat in amerikanisches
Datumsformat zu konvertieren ***
</SCRIPT>
| [aspgerman] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp