• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

allowed memory mit php umstellen

Status
Für weitere Antworten geschlossen.

Gilles

Blogger
Hallo,
Ich arbeite grade an einer Log-Auswertung.
Hier werden dann viele Datensätze ausgelesen was zur Überschreitung des Speichers führt
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes)
Da diese Anwendung die Einzige auf dem Server ist, die soviel Speicher wegnimmt habe ich mich gefragt, ob es möglich ist den Speicher für das kommende Script hochzusetzen.

Kann ich den Fehler auch irgend wie abfangen?
Denn ich würde diesen gerne nur in meiner Log sehen :D

Der Fehler wird durch mysql_fetch_array verursacht
Hier der Code dazu
Code:
while($row = mysql_fetch_array($query))
      {       
          $arrayAusgabe[$i]    = $row;
          $i++;   
      }


Könnte mir da jemand weiter helfen (Am besten mit einem mini Beispiel :) )

Danke schonmal
 
Zuletzt bearbeitet:
Vergleiche mal diese beiden Werte miteinander.
Habe probiert jetzt Logik hinter deinem Post zu finden und habe mir die Zahlen genau angeguckt :D Weiß leider nur nicht was ich damit machen soll :mrgreen:
Ich würde gern wissen wie ich den Fehler loggen kann.

So hatte ich es probiert, leider funktioniert das Ganze nicht
Code:
//Ergebnis auslesen und in ein Array eintragen
        
        // i für Zähler Schleife
        $i = 0;
         
        while($row = mysql_fetch_array($query, $modus)) {  
        if(mysql_error() != "") {
          TrafficLog::logError("Fehler beim auslesen der Datenbank: ".mysql_error(), $this);
        }     
            $arrayAusgabe[$i]    = $row;
            $i++;   
        }
          
        mysql_free_result($query);

Grade erst gesehen das es ein Fatal Error ist. Leider kann ein fatal Error nicht abgefangen werden. Schreibe mir nun eine Methode die überprüft ob der Speicher eventuell beim nächsten zugriff voll laufen könnte. Wenn ja wird dies in die Log geschrieben und eine Fehler Meldung ausgegeben.

Für die Leute die ein ähnliches Problem haben.
Schaut euch folgende Funktionen an:
Code:
// Setzt den maximal Speicher Verbrauch
ini_set("memory_limit","12M");

// Gibt den derzeit verbrauchten Speicher aus 
memory_get_usage();

// Noch als Tipp (Quelle: selfhtml.de)
// Liest das Memory limit in Byte aus
$memoryLimit = intval(ini_get('memory_limit')) * 1048576;
 
Zuletzt bearbeitet:
Der Fehler sagt du hast 33554432 Bytes zur Verfügung und wolltest nur 35 Bytes benutzen. Fällt dir jetzt etwas auf?
 
Der Fehler sagt du hast 33554432 Bytes zur Verfügung und wolltest nur 35 Bytes benutzen. Fällt dir jetzt etwas auf?
Heisst doch eigentlich nur dass der nächste Datensatz den ich auslesen würde den Speicher voll laufen lassen würde. (Halt 32MB marke überschreiten würde)
Wenn ich falsch liege sag mir bescheid :D

Und mit dem limit muss ich mir mal überlegen ob ich das in meinem Fall umsetzen kann. Müsste mit ner rekursiven Funktion bestimmt irgend wie hinkriegen ^^

Danke nochmals für eure Einfälle
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben