Hoi,
ich habe hier ein kleines Newsletter Script. Aufbau in etwa so
Das Script dient nur zur veranschaulichung der funktionsweise.
Nun bekomme ich mit einen memory_limit von 32MB nach etwa 700 Mails die Meldung "memory exhausted". Setze ich das limit entsprechend höher läuft es länger.
Nun meine Frage:
Wie kann sowas passieren? Ich mache nach jedem durchgang aus $msg ein neues array - damit ist das alte ja vaporisiert. Wenn noch irgendwas in $msg drin sein sollte, müsste es ja in den mails auftauchen - tut es aber nicht. Auf meinem entwicklungssystem läuft das script ordentlich mit über 7000 Empängern durch.
Das Script läuft auf dem Live Server encodet - anscheined ist deswegen die Zeile des Fehlers nicht zu gebrauchen. Ich lasse es gerade unencodet laufen um die Zeile herraus zu bekommen.
Jemand von euch ne Idee? danke.
ich habe hier ein kleines Newsletter Script. Aufbau in etwa so
PHP-Code:
//hol mal die empfänger aus einer db und pack sie in $user
foreach($user AS $recipient){
$msg = array();
$msg[] = 'Hallo lieber Newsletter Empfänger';
//...
$msg[] = 'Tschöss!';
$headers = '..'; //richtige header
$subject = 'Newsletter';
$to = $recipient['email'];
$message = implode("\n",$msg);
if(mail($to, $subject, $message, $headers)){
//alles klar
}else{
//misst
}
}
Nun bekomme ich mit einen memory_limit von 32MB nach etwa 700 Mails die Meldung "memory exhausted". Setze ich das limit entsprechend höher läuft es länger.
Nun meine Frage:
Wie kann sowas passieren? Ich mache nach jedem durchgang aus $msg ein neues array - damit ist das alte ja vaporisiert. Wenn noch irgendwas in $msg drin sein sollte, müsste es ja in den mails auftauchen - tut es aber nicht. Auf meinem entwicklungssystem läuft das script ordentlich mit über 7000 Empängern durch.
Das Script läuft auf dem Live Server encodet - anscheined ist deswegen die Zeile des Fehlers nicht zu gebrauchen. Ich lasse es gerade unencodet laufen um die Zeile herraus zu bekommen.
Jemand von euch ne Idee? danke.
EDIT:
Ich instanziere während der Generierung für jeden Usernoch ein Object - allerdings wird es jedesmal überschrieben. Somit kann das ja auch nicht der Speicherfresser sein.
Kommentar