Nicole: Warum timeout beim mailversand ?

Hallo erst mal ;-)

Dass bei ein paar hundert Emailempfänger ein
Timeout passiert und wie man das verhindert
weiss ich.

Aber warum passiert der Timeout überhaupt ?
Damit meine ich nicht:
"..weil scriptlaufzeit auf 30 sec. gestellt ist"

Sondern wo ist der Unterschied zwischen einer
Schleife die ewig lange weiterzählen kann und
dem Mailversand in einer Schleife?

Oder genauer:
Was passiert Serverintern, dass der Mailversand bei vielen Mails
ins Stocken gerät und langsamer wird, soooo laaaangsangsam
dass die einfache mail funktion länger als 30 sec dauern kann ?

Gruss Nikki

  1. Aber warum passiert der Timeout überhaupt ?

    Sondern wo ist der Unterschied zwischen einer
    Schleife die ewig lange weiterzählen kann und
    dem Mailversand in einer Schleife?

    PHP unterscheidet zwischen tatsächlicher eigener Laufzeit und der Zeit, in der es auf externe System warten muß. Davon unabhängig kann selbstredend auch jedes dieser externen Systeme eine eigene Zeitbeschränkung haben.

    Was passiert Serverintern, dass der Mailversand bei vielen Mails
    ins Stocken gerät und langsamer wird, soooo laaaangsangsam
    dass die einfache mail funktion länger als 30 sec dauern kann ?

    Die Maschine ist dicht, irgendwann ist jede Resource mal erschöpft. Was genau nun das Problem ist (Limit an unbearbeiteten Mails, zuviele Festplattenzugriffe, zu wenig Prozessorzeit, zu wenig Netzwerkbandbreite) kann Dir nur derjenige sagen, der für den Server verantwortlich ist.

    Gruß,
      soenk.e

  2. Hallo Nikkim

    Was passiert Serverintern, dass der Mailversand bei vielen Mails
    ins Stocken gerät und langsamer wird, soooo laaaangsangsam
    dass die einfache mail funktion länger als 30 sec dauern kann ?

    naja, wenn die Mails direkt vom Skript verschickt werden (also
    nicht zuerst in einer Queue landen) kann es pro Mail schon ein
    paar Sekunden dauern. Dein Skript muß ggfs. zuerst mal den Namen
    des Mailservers ermitteln (bzw. das Modul, dass die Mails verschickt)
    dann eine Verbindung zum Zielserver herstellen. Wenn das Ziel
    dann mal geantwortet hat (was u.U. auch etwas dauern kann) folgt
    halt ein Frage-Antwortspiel. Bis das durch ist, vergehen bei
    langsamen Mailservern ein paar Sekunden. Wenn du jetzt ein Timeout
    von 30 Sekunden hast, kriegst du vielleicht 30 oder evtl. auch
    50 Mails durch. Viel mehr wird wohl nicht drin sein. Aber eine
    verlässliche Angabe ist das natürlich nicht ;)

    Tschau, Stefan