Hallo!
Habe mir ein neues Newsletterscript gebastelt. Das Script funktioniert so:
1. Ermittele ich die Startzeit und lege eine Endzeit die unter dem Timeout des Providers liegt fest
2. Schicke ich in einer schleife per mail() emails - zum testen alle an mich - bis die vorher bestimmte Endzeit erreicht ist.
3. Übergebe ich per fsockopen() die Nummer der letzten mail an ein zweites Script
4. beende ich das Script mit exit().
5. Das zweite Script übergibt ebenfalls die Nummer der letzten Mail an das ursprüngliche Script
6. alles geht von vorne los, mit dem Unterschied das nach der zuletzt gesendeten Mail weitergemacht wird
(ich versende zwar immer dieselbe mail, aber immer mit der eigenen Nummer im Subject)
Soweit funktionierte das recht gut, bis ich mal die mail mit Inhalt füllte und i9nsgesamt 10.000 emails versenden wollte.
Angeblich wurden 10.000 emails versendet, aber von den 10.000 sind nur 5.000 angekommen. Es fehlen immer zwischendurch ein paar mails! Die mailbox hatte 5 mal mehr Speicherplatz als alle mails zusammen haben könnten.
Ich habe ständig mails abgeholt! Der Versand hat alles in allem 30 minuten gedauert und knapp 30 Durchläufe beider Scripte.
Der Versuch mit 1.000 Mails hat ohne Probleme geklappt. jemand ne Idee in welcher Richtung so ein Fehler liegen könnte? Die Scripte sehen so aus:
SCRIPT 1:
<?
$fehler="";
// x ist die anzahl, wie oft das Script geöffnet wurde
if(!$x){
$x=1;}
// i wird bei jeder neuen Mail erhöht und immer mitgeschleppt
if(!$i){
$i=1;}
if(!$startzeit){
$startzeit=time();}
// siehe in den emails, war hinterher ganz interessant
$turn="Turn ".$x;
// Definition Wie lange dieses Script(die Schleife) laufen soll - max. 80
$ende=time()+60;
$file = "agbs.txt";
$data = fopen($file, "r");
$message = fread($data, filesize($file));
fclose($data);
while($zeit<$ende){
//Laufzeit des gesamten Newsletterversandes in Sekunden bis jetzt
$secs=time()-$startzeit;
$subject=$i." - ".$secs;
$gesendet=mail("akorthaus@knet-systems.de", "$subject", "$message", "From: akorthaus@knet-systems.de ($turn)");
if(!$gesendet){$fehler.=$subject."\n";}
$zeit=time();
$i++;
}
$file = "fehler.txt";
$data = fopen($file, "a+");
fwrite($data, $fehler);
fclose($data);
// solange noch kein 10000 mails versendet sind noch ein neuer Durchgang
if($i<10000){
$fp = fsockopen ("www.knet-systems.de",80);
@fputs ($fp,"HEAD /get.php?x=$x&i=$i&startzeit=$startzeit HTTP/1.1\nHost: www.knet-systems.de\n\n");
exit();}
?>
SCRIPT 2:
<?
$x++;
$fp = fsockopen ("www.knet-systems.de",80);
@fputs ($fp,"HEAD /aus.php?x=$x&i=$i&startzeit=$startzeit HTTP/1.1\nHost: www.knet-systems.de\n\n");
exit();
?>
Grüße
Andreas
PS: Was haltet Ihr von den Scripten?