Newsletterversand als Prozess auf Server starten?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Newsletterversand als Prozess auf Server starten?

    Hi,

    ich baue gerade ein Newsletter-Tool mit dem man mehrere 10.000 Adressaten erreichen können soll. Ich möchte/kann kein fertiges Tool nehmen, deswegen muss ich es selber bauen. Falls es irgendwie hilft, ich verwende dazu das Application Framework Fusebox - für PHP natürlich

    Grundsätzlich gibt es ja verschiedene Möglichkeiten per PHP Mails zu verschicken.

    1. Eine Mail rausschicken, die als BCC alle Empfänger enthält. Problem: geht nur bei geringer Anzahl.

    2. Alle Empfänger aus der Datenbank holen und in ner Schleife die Einträge abarbeiten, wobei jeder Durchlauf ein mal die mail()-Funktion aufruft. Problem: Skriptlaufzeit - auf meinem Server werden Skripte nach 90 Sek. beendet, da komm ich leider deutlich drüber.

    3. Nur einen bestimmten Teil (z. B. 100-1.000) Empfänger aus der Datenbank holen und bei einem Skriptdurchlauf wie bei 2. abarbeiten. Ist das fertig ruft sich das Skript selbst wieder auf und nimmt die nächsten 100 bzw. 1.000 Empfänger. Problem: Zumindest bei Firefox gibt es eine Begrenzung für die Anzahl an automatischen Weiterleitungen, nach ner Weile bricht er ab (wie IE das macht weiss ich noch nicht).

    4. Und das ist meine eigentliche Frage: Es wäre ja auch möglich das Skript als Prozess auf dem Server aufzurufen, z.B. mit system("php /pfad/skript.php?var=value"). Das Problem ist dann aber, dass system() solange wartet bis der Prozess fertig ist und demnach nach 90 sek. wieder abbricht.

    Kennt jemand von Euch eine Möglichkeit das zu umgehen bzw. einen besseren Weg diesen Haufen Mails rauszuschicken?

    Ich hoffe mir kann hier jemand helfen, ich sitze schon seit Wochen immer wieder an diesem Problem und komme einfach nicht weiter.

    Schon mal Danke für Eure Vorschläge,

    Norman

  • #2
    Das hört sich aber verdächtig nach SPAM an,
    hast nen Auftrag aus der "professionellen" Werbeindustrie?

    Kommentar


    • #3
      Ich kann Dich beruhigen, es ist kein Spam. Das ist der Newsletter für einen Online-Shop. Jeder der sich einträgt muss sich zuerst über eine Bestätigungsmail freischalten (double-opt-in), damit auch wirklich niemand da rein kommt, der das nicht wünscht.

      Kommentar


      • #4
        naja, warum verschickst die mail dann nicht einfach direkt nach dem anmelden?

        oder immer an jedem tagesende und selektierst aus der DB nach einem bestimmten Timestamp?

        So wäre das Problem schon gelöst...

        Kommentar


        • #5
          Mach doch eine Kombination aus 3 und 4
          also erstmal rufst du das Script auf.
          Das versendet zb 1000 mails und die makierst du als versendet.
          Dann beim nächsten aufruf nimmst du die nächsten 1000 mails die noch nicht als versendet makiert sind und versendest wieder..

          So arbeite ich zb meine Operationen per cron ab. Cron wird alle 5-10 min gestartet, schaut in die datenbank ob es noch unerledigte operationen gibt und arbeitet dann einen bestimmten teil ab und makiert die als erledigt

          mfg

          Kommentar


          • #6
            @p_rehm

            Na weil es ein Newsletter ist, der z. B. 1x im Monat an einem festen Termin verschickt wird und den dann alle auf einmal bekommen sollen und nicht der eine heute und der andere 10 Tage später...

            @Trashar

            Hm, das klingt gar nicht schlecht. Wenn schreibt also den Newsletter und wenn er fertig ist markiert man ihn quasi als versandbereit. Dann ruft man per Cron das Mailskript auf und checkt ob ein versandbereiter Newsletter existiert, bei dem es noch "offene" Empfänger gibt... das wäre wirklich ne gute Lösung, wo die mails auch relativ Zeitnah verschickt werden...

            Ich kann bei meinem Hoster einen Cron allerdings maximal alle halbe Stunde aufrufen. Wenn ich also 100.000 Empfänger habe und gleichzeitig max. 1.000 Mails auf einmal verschicke, dann dauert es 50 Stunden oder ungefähr 2 Tage... bei ner Million (keine Ahnung ob das realistisch ist) wären es aber schon wieder 20 Tage, was nicht gut ist...

            Was hast Du dabei für Erfahrungen gemacht, wie viele Mails man auf einmal verschicken kann?
            Zuletzt geändert von nbirke; 08.02.2006, 12:40.

            Kommentar


            • #7
              wenn du den Versand per Cronjob starten würdest würde sich ja max_execution_time gar nicht auswirken, oder?

              Dann müsstest du ja alle auf einmal rauslassen können - aber vorsichtig, lass in deiner Schleife nach einer gewissen Anzahl von durchgängen ne Pause einlegen, sonst machst evtl. deinen Server platt oder wenn du nur Hosting hast, gibts nen bösen Brief vom Hoster...
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Gute Frage, da bin ich mir selbst nicht so sicher ob die Laufzeitbegrenzung hier zieht...

                Es macht wie Du aber sagst trotzdem Sinn das dann im Halbstundentakt zu machen, da ich auch nicht weiss, wieviele Mails der Mailserver auf einmal verträgt. Ich hab zwar einen eigenen Server aber die Mails werden über einen Serverpool des Hosters verschickt, weil bei mir keiner installiert ist.

                Übrigens ist Domainfactory da relativ flexibel. Die haben mir grad angeboten bei den Cronzeiten ne Ausnahmen zu machen und mir ein beliebiges Einzurichen - ein feiner Zug also könnte ich es auch im 10 min. Takt machen...

                Kommentar


                • #9
                  Wenn du eh mit denen in gutem Kontakt bist, würd ich an deiner Stelle einfach mal fragen, was die so meine, wieviele Mails du in einem bestimmten Zeitraum maximal rauslassen kannst - dabei solltest aber auch ungefähr wissen, wieviel KB die Mails in etwa haben werden - wird ja auch ein Unterschied sein, obs 1000 Mails mit 1KB sind oder 20 Mails mit 500 KB wegen nem Anhang oder so.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Das hab ich schon mal gemacht, die konnten mir da pauschal auch nichts zu sagen. Sie meinten es sollte eigentlich nichts passieren wenn man zu viele Mails auf einmal rausschickt, ausser dass es halt länger dauert bis sie wirklich weg sind. Das Problem ist halt auch, dass die Dateigröße schwankt. Es ist aber eher viel, weil HTML- und Textmails als eine Mail verschickt werden und die HTML-Mails halt relativ groß sind. Ich kanns nicht genau sagen aber bis 20kb kann das schon mal werden.

                    Kommentar


                    • #11
                      *größtenteils überflieg*

                      starte dein skript doch im hintergrund und leite die ausgabe um (log datei oä. oder /dev/null wenns gar uninteressant ist ..)

                      http://www.google.de/search?q=linux+...la:de:official
                      mfg,
                      [color=#0080c0]Coragon[/color]

                      Kommentar

                      Lädt...
                      X