MAIL alternative?
Marco Scherer
- php
ich möchte einen newsletter an etwa 2.500 empfänger schicken, wobei jede mail individuelle (empfänger-spezifische) daten enthält, d.h. ein senden per BCC ist nicht möglich.
die funktion mail() braucht allerdings bei grademal 5 emails schon ewig lange und bei 2.500 wäre ein time-out unumgänglich.
welche möglichkeiten bleiben mir noch?
scherer
Hallo Marco,
baue in deiner Schleife ein sleep() ein.
Zitat:selfphp:
Mit sleep() kann man Skriptausführung für eine gewisse Zeit (seconds)unterbrechen. Die Zeit wird dabei in Sekunden angegeben. Sobald die Zeit verstrichen ist, wird die Ausführung des Skripts wieder aufgenommen.
--- falls unklar nochmal bei selfphp nachschlagen------
z.B. innerhalb schleife
if($i/30){sleep(60);}
// also alle 30 Emails eine Pause von 60 Sec.
Gruss Nikki
ps. Mich würde mal dein Werbepreis interessieren
für 2 Zeilen in deiner Massenmail.
Zitat:selfphp:
Mit sleep() kann man Skriptausführung für eine gewisse Zeit (seconds)unterbrechen. Die Zeit wird dabei in Sekunden angegeben. Sobald die Zeit verstrichen ist, wird die Ausführung des Skripts wieder aufgenommen.
also ich denke das mit sleep keine gute lösung ist ..
eine möglichkeit wäre den timeout zu verlängern und das mit:
http://de.php.net/manual/de/function.set-time-limit.php
die andere möglichkeit die sehr schick ist meiner meinung nach ist diese das du eine datei hast die genau eine mail verschickt anhang der id von mir aus.
Diese datei rufst du dan wie folgt auf:
$anzahl = 25500;
while($i <= $anzahl){
$i++;
<img src="datei.php?id=3444" heigth="1" width="1">
}
so würde ich das machen den so bekommst du kein timeout und die geschichte sollte eigentlich laufen.. ( diese methode hab ich irgendwo mal gesehen bzw gelesen ) ..
Ich hoffe das kann dir weiter helfen ;)
Gruß aus Hockenheim
Steven Binder
$anzahl = 25500;
while($i <= $anzahl){
$i++;
<img src="datei.php?id=3444" heigth="1" width="1">
}
Diese Version liesse sich ev. noch ein wenig verschönern. Man könnte dieses Script ja auch einfach auf dem Server starten und dann vergessen...
exec("pfad/zu/php datei.php 3444 > /dev/null");
Doch ob der Server das mittmacht...
Gruss Michael
exec("pfad/zu/php datei.php 3444 > /dev/null");
Doch ob der Server das mittmacht...
also ich würd das eben so machen wie oben beschrieben... sollte eigentlich funktionen ( ich hab das auch noch nicht ausprobiert nur gelesen )
und diese script verschickt eben nur eine Email die man anhand der ID 3444 aus einer db z.b auslesen muß.
ich denke das sollte in jeder php ver. möglich sein ;)
Gruß Steven
Hallo,
und diese script verschickt eben nur eine Email die man anhand der ID 3444 aus einer db z.b auslesen muß.
die ID wird bei meinem Beispiel ja übegeben?! ist danach in $argv[1] drin... oder hab ich jetzt was falsch verstanden?
ich denke das sollte in jeder php ver. möglich sein ;)
Das schon.. aber der Server könnte mühe haben wenn "gleichzeitig" 2500 Scripts ausgeführt werden müssen.
mfg
Michael
die ID wird bei meinem Beispiel ja übegeben?! ist danach in $argv[1] drin... oder hab ich jetzt was falsch verstanden?
nene das stimmt schon dir wird übergeben <img src="datei.php?id=3444">
Das schon.. aber der Server könnte mühe haben wenn "gleichzeitig" 2500 Scripts ausgeführt werden müssen.
naja er führt die ja nicht gleichzeitig aus sonder nach einander und eine mail verschicken ist denke ich kein problem für den server ;)
Gruß Steven
nene das stimmt schon dir wird übergeben <img src="datei.php?id=3444">
komme nicht mehr draus.. egal :)
naja er führt die ja nicht gleichzeitig aus sonder nach einander und eine mail verschicken ist denke ich kein problem für den server ;)
Doch schon fast gleichzeitig... > /dev/null ist ja gerade dazu da, dass das Script nicht auf den Abschluss wartet. Und nach der Problemschilderung zu folgen braucht dieser Server eine ganze Weile um eine Mail zu versenden.
Aber das würde sich wohl nur beim Versuch zeigen.
Gruss Michael
Hallo Steven,
sleep() klappt bei mir einwandfrei.
Aber deine Lösung ist interessant für andere Sachen,
wusste bisher nicht dass man über den img src auch
dateien aufrufen kann. Ist das auch so vorgesehen,
oder kann das bald wieder zu Fehlern im
Script führen(zb. Bei anderen php versionen)?
Gruss Nikki
Zitat:selfphp:
while($i <= $anzahl){
$i++;
<img src="datei.php?id=3444" heigth="1" width="1">
}
Wie wärs mit set_time_limit(0);?
Sonst geht der direkte sendmail-Aufruf ev. schneller (sicher bei google unter sendmail php fopen). Bin mir aber nicht sicher...
Aber was ist das für ein Server, der so lange hat um eine Mail zu verschicken? Ev. mal mit dem Provider sprechen...
Gruss Michael