Stefan Falz: Mailabruf blockiert das ganze Intranet

Beitrag lesen

Hallo,

Ich finde es Super das diese Forum wieder eröffnet wurde und das neue Layout sieht auch gut aus ! :)

Jupp, das finde ich auch.

Ich habe eine Seite erstellt wo eben diese ASP-Komponente mehrere POP3-Konten abruft (jede 5 min.) und diese dann in eine DB schreibt.

Jedesmal wenn die Seite die Konten abruft können keine anderen ASP-Seiten aufgerufen werden, sie sind einfach blockiert.
Nach einer gewissen Zeit löst sich die Blockade und man kann bis zum nächsten Mailabruf weiterarbeiten.

Hat jemand einen Tip woran das liegen kann ???

welche MDAC Version ist denn auf dem Server installiert.
Bei MDAC 2.x gibt es eine klitzekleine Änderung bzgl.
Objekterstellung innerhalb von Schleifen.

Dieser Code z.B.: bringt den Server fast zum Stillstand

<%
Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DSN","",""
Do While Not MailAbruf.EOF ' oder deine Abbruchbedingung
    SQL = "INSERT INTO ..."
    Set rs = conn.Execute SQL
    ' --- vorige Zeile ersetzen durch: conn.execute SQL (ohne Set rs ...)
    MailAbruf.MoveNext
Loop
    conn.Close
Set conn = Nothing
%>

Andere generelle Möglichkeit (nicht auf deine Frage zugeschnitten)

<%
Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "DSN","",""
Set rs = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT Spalte ..."
    rs.Open SQL, conn, 3, 3
Set rs2 = Server.CreateObject("ADODB.Recordset")
Do While Not rs.EOF

SQL2 = "SELECT ..."
    rs2.Open SQL2, conn, 3, 3
    ...
    rs2.Close

rs.MoveNext
Loop
    rs.Close
Set rs = Nothing
    conn.Close
Set conn = Nothing
%>

Auf jeden Fall würde ich mal hinter jedem Aufruf oder Schleifendurchlauf
die aktuelle Zeit ausgeben, damit Du siehst, welche Funktion so
zeitraubend ist.
Ein evtl. eingebautes Response.Buffer für den Test auf False setzen.
Solltest Du irgendwo ein Application.Lock drinhaben, schmeiß es auch mal raus.

Tschau, Stefan