Frage

Gibt es eine Weise, die ich über 3000 + E-Mails von einem PHP-Skript Anfrage eine dedizierte IP ohne Überlastung aussenden können ... die maximal 500 pro Stunde sein würde?

Wenn Sie nicht mir bekommen .. hier beschrieben:)

Ich kann nur 500 E-Mails über die Funktion mail () in PHP pro Stunde über meine dedizierten IP aussenden, ist es eine Möglichkeit, zum Beispiel 3000 Zeilen von E-Mail senden, könnte aus einer E-Mail-Adresse gezogen, sondern taumeln die E-Mail () out-Funktionen für 500 pro Stunde ...

Danke schon!

War es hilfreich?

Lösung

Erstellen 2 Tabellen, eine für die E-Mail-Nachricht und eines für die Liste des Empfängers. Dann erstellen Sie ein Skript von cron ausgeführt werden, dass überprüft, ob eine neue Nachricht in der Nachrichtentabelle ist und wenn sendet so einen Stapel von E-Mail an die nächste Gruppe von Empfängern. Markieren jeden Empfänger nach der Mail gesendet wird.

Dann erstellen Sie eine Web-Schnittstelle für den Client eine Nachricht zu erstellen und fügen Sie Empfänger auf die Nachricht, sobald die Benutzer markiert die Nachricht als bereit, Ihre Cron-Job-Picks es zu gehen und Prozesse es.

Wenn es keine Nachrichten Ihre Cron-Job gesendet werden soll etwas nicht tun.

Andere Tipps

Sie könnten zwischen den Anrufen schlafen, oder, wenn sie bereits in einer Datenbank sind, setzen Sie ein Feld dort das sagt, wenn sie gesendet wurden. Dann sind Sie diejenigen auswählen, die noch nicht gesendet wurden, und von dort aus starten.

würde ich ein Feld in der DB gesetzt zu zeigen, wenn die letzte E-Mail an jeden Benutzer gesendet wurde und was eine E-Mail es war. Ich würde auch eine andere DB-Tabelle hat jede E-Mail zeigen Sie geschickt, und wenn es noch an alle Benutzer gesendet wurde.

User Table:
Id, UserName, Email, etc, DateTimeOfLastEmail, LastEmailId

Email Table:
Id, EmailSubject, EmailContent, DateTimeSent, SentToAll(True/False), DateTimeOfFinish

Danke für alle Antworten! Der beste Weg, fand ich war eigentlich einfach sleep () zwischen den Anrufen mit dem sleep (), wie ich 400 Mails getestet, dies dauerte 17 Sekunden:)

Es ist unwahrscheinlich, dass der Benutzer mehr als die 450 Grenze schicken ... aber wenn sie es tun habe ich eine if-Anweisung vor der while () Ende überprüft, ob es mehr als 450 Zeilen sind, wenn also zwischen jedem schlafen. .. das funktioniert, ohne knifflig Datenbanken:)

Danke!

gut, nachdem er etwas Mathe tun könnten Sie eine E-Mail alle 8,3 Sekunden senden (498 / hr), aber es ist nicht das Problem lösen. Ich denke, dass ein anderer Ansatz einen DB zu verwenden wäre, Abfrage für die 500 und einen cron-Job das Skript jeder Stunde laufen lassen.

So in der DB-Tabelle können Sie das Skript Update ein Feld haben, nachdem die E-Mail gesendet wurde, so dass der nächste Cron-Job wird die nächsten 500 E-Mails abfragen und erhält, dass Bedarf gesendet werden.

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