2009-08-14 11 views
1

Ich habe eine Cron, die die gesamte Mail-Informationen generiert und in eine Datenbanktabelle mit $mail_queue->put(.....) mit einer Option zum Löschen von E-Mails nach dem Senden.Der beste Weg, um mehr als 10.000 E-Mails mit PEAR/Mail_Queue zu senden

Hier ist, wo ich ein wenig Hilfe brauche: Was ist der beste Weg, um die E-Mails zu senden, nachdem ich die oben genannten Informationen habe? Running the $mail_queue->sendMailsInQueue() sofort, mit anderen Cron-Job (s) oder etwas anderes?

Die Servergrenze ist übrigens 100 E-Mails/Minute. Zur Zeit wird das letzte csv-diff für Mail_Queue nicht angewendet (derzeit arbeitet mit der Unterstützung auf diesem), so dass ich die Option "Verzögerung" nicht verwenden kann.

Ich hatte eine Idee, die $seconds_to_send Option zu verwenden, aber es ist auf der Basis von create_time-Feld berechnet, die keine große Hilfe ist, aber es ist auch eine Option.

Alle Ideen und Vorschläge würden sehr geschätzt werden.

+3

Ist dies für Menschen spammen? – kokos

+2

@Kokos: Es gibt viele legitime Gründe für Massen-E-Mails. Wenn er ein neues E-Mail-System von Grund auf neu schreibt, anstatt eines der vielen, sofort verfügbaren System-Spammer zu verwenden, würde ich gutes Geld wetten, dass es einem vernünftigen Geschäftszweck dient. –

+0

Nein - wir brauchen dieses System, um benutzerdefinierte Newsletter, Benachrichtigungen und Registrierungs-E-Mails besser verarbeiten zu können. – RRStoyanov

Antwort

3

Persönlich würde ich den Cron-Weg gehen, weil es weniger Möglichkeit zum Scheitern gibt. Angenommen, Ihr Mail-Server reagiert nicht mehr oder ist aus einem anderen Grund nicht mehr verfügbar. Oder was ist, wenn Ihr gesamtes Netzwerk für ein paar Stunden offline geht, aber die Server immer noch E-Mails generieren. Ich sage, benutze die Warteschlange.

Für die Verzögerung Sache, nur einen Service/Cronjob alle 60 Sekunden die Warteschlange abholen, 100 E-Mails Pop und senden sie, dann beenden. Sie können eine Warteschlange von E-Mails erhalten, die gesendet werden, aber das wird passieren, egal welches System Sie wählen. Die Warteschlange wird sowieso außerhalb der Stoßzeiten leer sein.

+0

Ja, eine Warteschlange ist gut, aber wenn Ihr gesamtes Netzwerk für ein paar Stunden offline ist und Sie immer noch E-Mails in die Warteschlange schieben, wird Ihr Mailserver in Schwierigkeiten geraten (100/min ist in Ordnung, aber das ist sloooooow für jede Art von * Massen * Mailing - 50K E-Mails würden einen halben Tag dauern). Ja, Festplattenspeicher ist billig - ein ähnlicher Vorfall hat uns gelehrt, dass 300 GB freier Speicherplatz einfach nicht genug sind. Mit anderen Worten, wenn du in einem Loch bist, hör auf zu graben! Du bist derjenige, der die Mails verschickt, es ist nicht so, als würden sie irgendwohin gehen, während du offline bist. – Piskvor

0

Warum Sie nicht 100 E-Mails durchlaufen und 60 Sekunden lang schlafen. Das kostet Sie keine Zeit, der einzige Nachteil ist, dass Ihr Skript etwas länger läuft.

2

Verwenden Sie zwei Skripte. eine für das Auffüllen Ihrer mail_queue-Tabelle mit den E-Mails, die Sie senden müssen, und das zweite Skript, um diese E-Mails in Blöcken von 90 Mails auf einmal zu senden. Stellen Sie das zweite Skript so ein, dass es etwa alle 2 Minuten aktiviert wird.

Sie könnten auch nur Ihren Hosting-Plan zu aktualisieren ;-)