PHP Stufengesteuerten Newsletterversand Cronjobfähig machen?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

habe hier einen Newsletterversand, der stufengesteuert ist. Also 200 Mails verschicken, dann datei.php?step=2 aufrufen mit den nächsten 200.....bis zum Ende eben.

Aber wie kann ich das Cronjobfähig machen? Denn die Weiterleitung funktioniert dabei ja nicht wirklich.

Gibts da irgendwie ne Möglichkeit?

Danke für eure Tipps
 
Markierungen in die Db welche Mails alle wen geschickt werden soll und dann pro cron-Durchlauf x Mails schicken und die Markierungen entfernen :roll:

Man könnte sogar die "Stufe" in ner MySQL-Datenbank speichern :roll:

Vllt solltest du irgendwann mal selbst nachdenken, bevor du hier fragst :ugly:
 
Problem war aber, dass bei 70.000 Mailadressen beispielsweise das Script nie bis zum Ende läuft
Dann würde ich nachdenken, ob für derartigen Massenversand von Mails die Serverkonfiguration in Ordnung ist.

So'n Stufenzeug mach ich bei 500 Mails, wenn mein Provider n Timelimit einsetzt. Bei 70k Mails setz ich ein set_time_limit(0), bevor ich die Mails sende.

Ansonsten eben die Abhaken-Version, wie schon beschrieben wurde.
 
Markierungen in die Db welche Mails alle wen geschickt werden soll und dann pro cron-Durchlauf x Mails schicken und die Markierungen entfernen :roll:

davon würde ich abraten, weil du nie genau sagen kannst ob der server die x mails auch schaffst...

besser wäre eine eine schleife die nach zeit x endet, und quasi soviele mails versendet, wie in dieser zeit halt versendet werden können...und dann die entsprechende markierung in der db-setzt...und beim nächsten cronjob-aufruf an der Stelle weitermacht...

Gedankencode:
a=zeit()+10s
while (zeit()<a)
{
sende-mail x
x++
}
merk x in db

Viele Grüße Greggy
 
klar...es ging nur darum nicht nach X mails den "(cron)-Aufruf" abzubrechen, sondern nach zeit x....der Rest war ok!

Grüße!
 
sehe ich zwar nicht so aber ok, denn damit haut dein Cron soviele Mails/sec raus wie möglich ist, aber man möchte ja den Mailserver nicht überanspruchen bzw. die Rechenzeit davon an anderen Ecken und Enden verwenden.
 
das problem an deiner variante is halt, dass wenn du X (anzahl der mails, die du mit einem durchlauf versendest):
- zu hoch einstellst: ==> script schafft nicht alle mails ==> script time-outet
- zu niedrig einstellst ==> das script wird viel zu oft aufgerufen ==> ggf. der mailversand dauert länger als gewünscht...

diese probleme verschwinden nach meiner variante halt...
 
ach ja? *hehe*

Dein Script pumpt sagen wir 700Emails/sec raus, dein Mail-Server schafft aber nur knapp 200/sec, ich hätte meine Zahl X so eingestellt, dass ich auf rund 180/sec komme.

Es mag zwar das Problem verschwinden, die Mails an den Mailserver zu geben, dafür wird man mit deiner Methode garantiert den Mailserver sehr stark belasten, was sich eventuell auf den ganzen Server auswirken kann.
 
und wenn der server langsamer wird => werden weniger mails generiert...
mal nebenbei:
ist der mailserver im vergleich zur mail-erzeugung wirklich sooo lahm?
 
Spricht eigenlich irgendwas dagegen einen lokalen mail server aufzusetzen, der sich um das eigentlich absetzen der mails kuemmert und dann in einem lokalen script die liste der empfaenger vom server zu holen? Dann kannst du das ganze von der shell laufen lassen, was schneller is, und ausserdem keine time limits hat?