Frage

Was ist der beste Weg, E-Mails mit mindestens 1000 oder mehr E-Mails in PHP zu versenden?Gibt es eine zuverlässige E-Mail-Warteschlangentechnik, die damit umgehen kann?­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

War es hilfreich?

Lösung

Sie könnten Ihre E-Mails einfach in eine Mail-Warteschlangen-Datenbanktabelle einfügen und einen separaten Prozess die Warteschlange überprüfen lassen und eine bestimmte Anzahl auf einmal stapelweise senden.

Andere Tipps

Dafür gibt es eine getestete Lösung:BIRNE Mail_Queue

Funktioniert gut für mich.

Wie Mercutio vorgeschlagen hat, würde ich für jede E-Mail, die auf den Versand wartet, einen neuen Datensatz in eine E-Mail-Warteschlangentabelle einfügen und dann einen separaten Prozess (wie einen CRON) verwenden, um die Tabelle regelmäßig auf in der Warteschlange befindliche Elemente zu überprüfen.

Wenn E-Mails in der Warteschlange stehen (und die E-Mail nicht für jeden Empfänger angepasst ist), würde ich die E-Mails nach Domäne gruppieren und Blöcke zusammen senden, um die Gesamtzahl der E-Mails zu reduzieren, die gesendet werden müssen, d. h.Wenn Sie 1000 E-Mails in der Warteschlange haben und 250 an Gmail-Konten gehen, würde ich die 250 in 25 10er-Blöcken senden (denken Sie an Bcc-Empfänger, damit sie sich nicht sehen).

um tatsächlich die E-Mail zu versenden, die ich verwenden würde PEAR-Mail über die Funktion mail() von PHP

Löschen Sie nach dem Senden der E-Mail entweder Datensätze aus der Warteschlange oder ändern Sie ein Statusflag, um anzuzeigen, dass die E-Mail gesendet wurde, und führen Sie eine Schleife aus. Außerdem würde ich einen Zähler hinzufügen, um E-Mails zu verfolgen, die nicht gesendet werden konnten, und sie nach x fehlgeschlagenen Versuchen zu entfernen

Um Zeitlimitprobleme zu überwinden, würde ich (abhängig von der Situation) - SET SET_TIME_LIMIT () auf x Sekunden festlegen und die Ausführungszeit des Skripts verfolgen (das Skript nach (x -1) Sekunden abtöten) - Rufen Sie das Skript vom Befehl aus dem Befehl auf Zeile zur Vermeidung von Zeitüberschreitungen - Legen Sie ein Limit für die Anzahl der E -Mails fest, die das Skript in einer Ausführung senden könnte

Sicher, die Datenbanktabelle könnte eine Idee sein.Aber wie wäre es mit dem Versenden von 1000 E-Mails mit einem 2-MB-Anhang?Das müsstest du auch berücksichtigen.Ich selbst hatte das Problem und habe schließlich dazu übergegangen, die E-Mails in die Datenbank und die Dateien in das Dateisystem zu schreiben.Das von mir verwendete E-Mail-Skript las dann die Datenbankeinträge und versuchte, die zu sendenden Anhänge abzurufen.

Sind Sie sicher, dass Sie diese E-Mail-Warteschlange selbst durchführen müssen?

Übermitteln Sie einfach alle E-Mails an den E-Mail-Übertragungsagenten des lokalen Computers (sendmail...) und überlassen Sie diesem die Warteschlange und den Versand.Schließlich wurde es dafür konzipiert.

Mit anderen Worten:Mach dir darüber keine Sorgen!

Ich habe mich im Allgemeinen auf einen Hack verlassen.Ich habe eine Datenbankliste mit E-Mail-Adressen und verwende dann eine Meta-Weiterleitung zu self mit einem zunehmenden „Offset“-Parameter, der angibt, in welcher Zeile der Datenbank ich mich gerade befinde.Serverumleitungen verursachen Probleme, da Browser davon ausgehen, dass die benötigte Zeit auf eine Endlosschleife hinweist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top