Also ich glaub wenn du deine Recordsets und Connections immer mit Nothing freigibst dann gibt es kein Problem...
-----Urspr�ngliche Nachricht----- Von: Matthias Winkler [mailto:[EMAIL PROTECTED]] Gesendet: Sonntag, 27. Januar 2002 17:40 An: ActiveServerPages German Betreff: [aspgerman] global.asa 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 | [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
