Marco Scherer: MAIL alternative?

ich möchte einen newsletter an etwa 2.500 empfänger schicken, wobei jede mail individuelle (empfänger-spezifische) daten enthält, d.h. ein senden per BCC ist nicht möglich.

die funktion mail() braucht allerdings bei grademal 5 emails schon ewig lange und bei 2.500 wäre ein time-out unumgänglich.

welche möglichkeiten bleiben mir noch?

scherer

  1. Hallo Marco,
    baue in deiner Schleife ein sleep() ein.

    Zitat:selfphp:
    Mit sleep() kann man Skriptausführung für eine gewisse Zeit (seconds)unterbrechen. Die Zeit wird dabei in Sekunden angegeben. Sobald die Zeit verstrichen ist, wird die Ausführung des Skripts wieder aufgenommen.
    --- falls unklar nochmal bei selfphp nachschlagen------

    z.B. innerhalb schleife
    if($i/30){sleep(60);}
    // also alle 30 Emails eine Pause von 60 Sec.

    Gruss Nikki
    ps. Mich würde mal dein Werbepreis interessieren
    für 2 Zeilen in deiner Massenmail.

    1. Zitat:selfphp:
      Mit sleep() kann man Skriptausführung für eine gewisse Zeit (seconds)unterbrechen. Die Zeit wird dabei in Sekunden angegeben. Sobald die Zeit verstrichen ist, wird die Ausführung des Skripts wieder aufgenommen.

      also ich denke das mit sleep keine gute lösung ist ..

      eine möglichkeit wäre den timeout zu verlängern und das mit:
      http://de.php.net/manual/de/function.set-time-limit.php

      die andere möglichkeit die sehr schick ist meiner meinung nach ist diese das du eine datei hast die genau eine mail verschickt anhang der id von mir aus.

      Diese datei rufst du dan wie folgt auf:

      $anzahl = 25500;

      while($i <=  $anzahl){
        $i++;
        <img src="datei.php?id=3444" heigth="1" width="1">
      }

      so würde ich das machen den so bekommst du kein timeout und die geschichte sollte eigentlich laufen.. ( diese methode hab ich irgendwo mal gesehen bzw gelesen ) ..

      Ich hoffe das kann dir weiter helfen ;)

      Gruß aus Hockenheim
      Steven Binder

      1. $anzahl = 25500;

        while($i <=  $anzahl){
          $i++;
          <img src="datei.php?id=3444" heigth="1" width="1">
        }

        Diese Version liesse sich ev. noch ein wenig verschönern. Man könnte dieses Script ja auch einfach auf dem Server starten und dann vergessen...

        exec("pfad/zu/php datei.php 3444 > /dev/null");

        Doch ob der Server das mittmacht...

        Gruss Michael

        1. exec("pfad/zu/php datei.php 3444 > /dev/null");

          Doch ob der Server das mittmacht...

          also ich würd das eben so machen wie oben beschrieben... sollte eigentlich funktionen ( ich hab das auch noch nicht ausprobiert nur gelesen )

          und diese script verschickt eben nur eine Email die man anhand der ID 3444 aus einer db z.b auslesen muß.

          ich denke das sollte in jeder php ver. möglich sein ;)

          Gruß Steven

          1. Hallo,

            und diese script verschickt eben nur eine Email die man anhand der ID 3444 aus einer db z.b auslesen muß.

            die ID wird bei meinem Beispiel ja übegeben?! ist danach in $argv[1] drin... oder hab ich jetzt was falsch verstanden?

            ich denke das sollte in jeder php ver. möglich sein ;)

            Das schon.. aber der Server könnte mühe haben wenn "gleichzeitig" 2500 Scripts ausgeführt werden müssen.

            mfg
            Michael

            1. die ID wird bei meinem Beispiel ja übegeben?! ist danach in $argv[1] drin... oder hab ich jetzt was falsch verstanden?

              nene das stimmt schon dir wird übergeben <img src="datei.php?id=3444">

              Das schon.. aber der Server könnte mühe haben wenn "gleichzeitig" 2500 Scripts ausgeführt werden müssen.

              naja er führt die ja nicht gleichzeitig aus sonder nach einander und eine mail verschicken ist denke ich kein problem für den server ;)

              Gruß Steven

              1. nene das stimmt schon dir wird übergeben <img src="datei.php?id=3444">

                komme nicht mehr draus.. egal :)

                naja er führt die ja nicht gleichzeitig aus sonder nach einander und eine mail verschicken ist denke ich kein problem für den server ;)

                Doch schon fast gleichzeitig... > /dev/null ist ja gerade dazu da, dass das Script nicht auf den Abschluss wartet. Und nach der Problemschilderung zu folgen braucht dieser Server eine ganze Weile um eine Mail zu versenden.

                Aber das würde sich wohl nur beim Versuch zeigen.

                Gruss Michael

      2. Hallo Steven,
        sleep() klappt bei mir einwandfrei.

        Aber deine Lösung ist interessant für andere Sachen,
        wusste bisher nicht dass man über den img src auch
        dateien aufrufen kann. Ist das auch so vorgesehen,
        oder kann das bald wieder zu Fehlern im
        Script führen(zb. Bei anderen php versionen)?

        Gruss Nikki

        Zitat:selfphp:

        while($i <=  $anzahl){
          $i++;
          <img src="datei.php?id=3444" heigth="1" width="1">
        }

  2. Wie wärs mit set_time_limit(0);?

    Sonst geht der direkte sendmail-Aufruf ev. schneller (sicher bei google unter sendmail php fopen). Bin mir aber nicht sicher...

    Aber was ist das für ein Server, der so lange hat um eine Mail zu verschicken? Ev. mal mit dem Provider sprechen...

    Gruss Michael