EndEffekt: PHP-Skript bricht überraschend ab!

Hallo,

ums kurz zu machen: Ich habe einen Newsletter-Verteiler programmiert. Zunächst habe ich alle Mails über Bcc-Empfänger verteilt. Leider kann ich das nicht fortführen, weil ein gesetzlich vorgeschriebener Abmeldelink für Newsletter vorgesehen sind. Dieser Abmeldelink muss als Parameter die Email-Adresse, bzw. eine andere ID übergeben haben, deshalb variiert der Inhalt der Email für jeden Empfänger und ich muss sie folglich einzeln versenden.
Dabei kommts nun zum besagten Abbruch. Ich habe bereits mit ini_set() versucht die Ausführung des Skripts zu verlängern, scheint insofern auch zu funktionieren, dass ich nicht mehr die PHP-Warnung erhalte, sondern einen "internal Server Error" (500, wenn mich nicht alles täuscht). register_shutdown_function() hat leider auch nicht den erhofften Effekt erbracht. Daraufhin habe ich mal den Ausgabebuffer nach versenden jeder Email an den Clienten schicken lassen. Dann erhalte ich zumindest keine Warnung, aber offenbar werden trotzdem nur 7000 von 23000 Mails versendet.

  1. Einen schönen Sonntagmorgen,

    ums kurz zu machen: Ich habe einen Newsletter-Verteiler programmiert. Zunächst habe ich alle Mails über Bcc-Empfänger verteilt. Leider kann ich das nicht fortführen, weil ein gesetzlich vorgeschriebener Abmeldelink für Newsletter vorgesehen sind. Dieser Abmeldelink muss als Parameter die Email-Adresse, bzw. eine andere ID übergeben haben, deshalb variiert der Inhalt der Email für jeden Empfänger und ich muss sie folglich einzeln versenden.
    Dabei kommts nun zum besagten Abbruch. Ich habe bereits mit ini_set() versucht die Ausführung des Skripts zu verlängern, scheint insofern auch zu funktionieren, dass ich nicht mehr die PHP-Warnung erhalte, sondern einen "internal Server Error" (500, wenn mich nicht alles täuscht). register_shutdown_function() hat leider auch nicht den erhofften Effekt erbracht. Daraufhin habe ich mal den Ausgabebuffer nach versenden jeder Email an den Clienten schicken lassen. Dann erhalte ich zumindest keine Warnung, aber offenbar werden trotzdem nur 7000 von 23000 Mails versendet.

    Welcher Hoster?
    Welche Zugriffsrechte auf den Server?
    PHP alsa Modul oder als CGI?
    Sind die Systemfunktionen erlaubt (exec)?
    Kann ein Cronjob aufgerufen werden?

    LG
    Chris©

    1. Hallo, danke schonmal für deine Mühen

      Welcher Hoster?

      • http://www.strato.de/

      Welche Zugriffsrechte auf den Server?

      • Uneingeschränkter FTP-Zugriff.

      PHP alsa Modul oder als CGI?

      • Als Modul.

      Sind die Systemfunktionen erlaubt (exec)?

      • Sind erlaubt.

      Kann ein Cronjob aufgerufen werden?

      • Die Möglichkeit bestünde, leider müsste ich dazu einen Drittanbieter miteinwickeln, das möchte ich nur ungern.
      1. Hi!

        Kann ein Cronjob aufgerufen werden?

        • Die Möglichkeit bestünde, leider müsste ich dazu einen Drittanbieter miteinwickeln, das möchte ich nur ungern.

        Verständlich. Die Variante mit einem dieser kostenlosen Cronjob-Anbieter, die zu bestimmten Zeiten eine deiner Seiten aufrufen, ist aber nicht schlechter als mit meta-Refresh zu arbeiten.

        Bei Strato kannst du dir aber auch cronjobs einrichten. Allerdings bieten die das nur bei den Premium-Paketen (und natürlich dedizierten Servern).
        Eventuell müßtest du dann also dein Paket upgraden und 2, 3 Euro monatlich mehr zahlen.
        Ich halte das aber für den sinnvollsten Weg. Lieber ein paar Euro mehr zahlen, um die benötigte Funktionalität zu haben, als irgendwelche Notlösungen zusammen basteln zu müssen, die eventuell nicht in jedem Fall funktionieren.

        Schöner Gruß,
        rob

      2. Hallo,

        Welcher Hoster?

        • http://www.strato.de/

        PHP alsa Modul oder als CGI?

        • Als Modul.

        Das passt irgendwie nicht zusammen. Strato hat mWn immer nur mit CGI gearbeitet.
        Oder ist es ein eigener Server bei Strato?

        Sind die Systemfunktionen erlaubt (exec)?

        • Sind erlaubt.

        Dann stell doch einfach ein paar Jobs in den Hintergrund, die jeweils nur einen Teil der mails (so ca. 500) versenden. Die müssen natürlich ein Log bedienen oder den Erfolg in der DB eintragen.

        Den Fortschritt kannst Du dann mittels Log-Lese-Script beobachten.

        LG
        Chris©

  2. Hallo,

    ums kurz zu machen: Ich habe einen Newsletter-Verteiler programmiert. Zunächst habe ich alle Mails über Bcc-Empfänger verteilt. Leider kann ich das nicht fortführen, weil ein gesetzlich vorgeschriebener Abmeldelink für Newsletter vorgesehen sind. Dieser Abmeldelink muss als Parameter die Email-Adresse, bzw. eine andere ID übergeben haben, deshalb variiert der Inhalt der Email für jeden Empfänger und ich muss sie folglich einzeln versenden.

    Dann erhalte ich zumindest keine Warnung, aber offenbar werden trotzdem nur 7000 von 23000 Mails versendet.

    einfach die Daten gestaffelt versenden. Daten mit Limit x y auslesen, Mails senden, per Metarefresh mit Parameterübergabe des neuen Limit x Wertes danach den Vorgang solange neu starten bis alles raus ist.

    Gruß Helmut

  3. Hallo,

    [...] weil ein gesetzlich vorgeschriebener Abmeldelink für Newsletter vorgesehen sind. Dieser Abmeldelink muss als Parameter die Email-Adresse, bzw. eine andere ID übergeben haben, deshalb variiert der Inhalt der Email für jeden Empfänger

    nein, du denkst zu speziell.
    Der "Abmeldelink" kann auch ein mailto-Link sein, oder auch nur die verbale Aufforderung, man möge zum Abmelden bitte eine leere Mailnachricht mit dem Betreff "abc" an "xyz" schicken. Dann hast du die nötige Information über die Absenderadresse.

    Und schon kann dein Newsletter wieder -zigtausendmal denselben Wortlaut haben. Es ergibt auch IMHO keinen Sinn, wenn ich einen Newsletter, den ich über das Medium "e-Mail" bekomme, über ein anderes Medium, nämlich "HTTP", wieder abbestellen muss. Dann doch lieber innerhalb desselben Systems bleiben.

    So long,
     Martin

    --
    Alleine sind wir stark ...
    gemeinsam sind wir unausstehlich!