Zu wenig Speicher?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zu wenig Speicher?

    Hoi,

    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
      
    }


    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.


    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.
    Zuletzt geändert von prego; 29.05.2006, 17:43.

  • #2
    Somit kann das ja auch nicht der Speicherfresser sein.
    Naja... gewagte Behauptung....

    PHP-Code:
    // objekt erzeugen  
    $obj = & new IrgendWas();   // & <<-- nur PHP4 

    // objekt killen  
    $obj NULL;  
    unset(
    $obj); 
    So hilft man der PHP Müllabfuhr auf die Sprünge...
    Wir werden alle sterben

    Kommentar


    • #3
      Danke,

      habe es aber mtwl schon so umgebaut das das benötigte Objekt nur einmal instanziert wird. Leider ohen Erfolg.

      Momentan habe ich die Funktion wordwrap in Vermutung, da die bis einschließlich PHP 5.1.2 einen overflow-bug hat. Da würde zumindest Ansatzweise erklären warum auf dem Entwicklungssystem (5.1.4) alle in Ordnung ist. Auf dem Live-System läuft 5.1.2.

      Kommentar


      • #4
        Hoi,

        das Thema ist gelöst - der böse war ZendOptimizer. Sowie der geladen ist und ich encodeten kram ausführe kommt es zum beschriebenen verhalten.

        Wer will, dem kann ich ein testscript geben....

        Kommentar

        Lädt...
        X