Ankündigung

Einklappen
Keine Ankündigung bisher.

Newsletter, Konzept für Sendeprozess

Einklappen

Neue Werbung 2019

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

  • Newsletter, Konzept für Sendeprozess

    Hi,

    ich arbeite momentan an einen Newsletter und bin am überlegen, wie ich den Sendeprozess am besten abwickeln kann. Verwendet werden Swiftmailer und ein paar Symfony Komponenten (u.a. Console). Meine bisheriges (grobes) Konzept:
    • Beim versenden einer Nachricht werden die Empfänger / Abonnenten in eine separate DB-Tabelle "Queue" eingetragen.
    • Der Newsletter-Admin kann unter den Einstellungen die Batch-Größe (Anzahl der zu versendenen Mails pro Batch) festlegen sowie die Art und Weise wie die Queue abgewickelt werden soll - entweder mittels "Remote cron jobs" (z.B. cron-job.org) oder mittels Cron job + Symfony Console Command. Im ersten Fall wäre zusätzlich ein API-Sclüssel zu definieren, mit welchem dann in Verbindung einer URL wie z.B. http://example.tld/newsletter/queue/<api-key> der Queue-Prozess gestartet werden kann.
    • Egal welche Einstellung man nun trifft, in beiden Fällen wird mittels flock() (LOCK_EX | LOCK_NB) eine Kollision von Cron jobs und dadurch das mehrfache Versenden der selben Mail an einen Abonnenten vermieden.
    • Immer wenn der Job ausgeführt wird, werden der Batch-Größe entsprechend viele Empfänger aus der Queue-Tabelle abgefragt. In einer Schleife wird dann mittels Swiftmailer und Decorator Plugin für jeden Empfänger eine personalisierte Mail generiert, versendet und der Empfänger aus der Queue Tabelle entfernt. Zudem wird mittels Anti-Flood-Plugin ein SMTP-Reconnect sichergestellt, sobald die maximale Anzahl an gesendeten Mails pro SMTP-Verbindung erreicht wurde. Auf das Throttler-Plugin kann ich wohl verzichten, da dessen Aufgabe ja mittels dem Zeitintervall des Cron jobs erledligt wird?!

    Sind meine Überlegungen korrekt bzw. habe ich etwas Wichtiges ausgelassen?

    Grüße


  • #2
    Was spricht gegen einen Daemon der ein Mail-Spooler-Table leer-"spooled" statt cron ?
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Wieso ein flock wenn eine Datenbanktransaktion dasselbe kann? Der flock ist ausserdem gefährlich, wenn dein Script abstürzt, er muss dann nicht zwingend freigelassen werden
      [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

      Kommentar

      Lädt...
      X