354 Stimmen

Erlaubte Speichergröße von 33554432 Bytes ausgeschöpft (versucht, 43148176 Bytes zuzuweisen) in php

Diese Fehlermeldung wird angezeigt. Haben Sie irgendwelche Vorschläge?

A 43148176 Bytes) in php

396voto

panidarapu Punkte 8547

Wenn Ihr Skript erwartet um diese große Menge an Speicher zuzuweisen, können Sie das Speicherlimit erhöhen, indem Sie diese Zeile in Ihre php-Datei einfügen

ini_set('memory_limit', '44M');

donde 44M ist die Menge, die Sie voraussichtlich verbrauchen werden.

Cependant Meistens bedeutet diese Fehlermeldung, dass das Skript macht etwas falsch und die Erhöhung des Speicherlimits führt nur zu derselben Fehlermeldung mit anderen Zahlen.

Anstatt das Speicherlimit zu erhöhen, müssen Sie den Code so umschreiben, dass er nicht mehr so viel Speicher zuweist. Zum Beispiel die Verarbeitung großer Datenmengen in kleineren Teilen, das Zurücksetzen von Variablen, die große Werte enthalten, aber nicht mehr benötigt werden, usw.

71voto

Haider Abbas Punkte 693

Hier sind zwei einfache Methoden, um das Limit beim Shared Hosting zu erhöhen:

  1. Wenn Sie Zugang zu Ihrer PHP.ini-Datei haben, ändern Sie die Zeile in PHP.ini Wenn Ihre Zeile 32M anzeigt, versuchen Sie 64M: memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

  2. Wenn Sie keinen Zugang zu PHP.ini haben, versuchen Sie, dies in eine .htaccess-Datei einzutragen: php_value memory_limit 64M

53voto

Rik Heywood Punkte 13598

Ihr Skript verbraucht zu viel Speicher. Dies kann in PHP häufig passieren, wenn eine Schleife außer Kontrolle geraten ist und Sie bei jedem Schleifendurchlauf Objekte erstellen oder Arrays hinzufügen.

Prüfung auf Endlosschleifen.

Wenn das nicht das Problem ist, versuchen Sie, PHP zu helfen, indem Sie Objekte, mit denen Sie fertig sind, zerstören, indem Sie sie auf null setzen. z.B.. $OldVar = null;

Überprüfen Sie auch den Code, in dem der Fehler tatsächlich auftritt. Würden Sie erwarten, dass in dieser Zeile eine große Menge an Speicher zugewiesen wird? Wenn nicht, versuchen Sie herauszufinden, was schief gelaufen ist...

49voto

Delali Punkte 786

Tun :

ini_set('memory_limit', '-1');

ist niemals gut. Wenn Sie eine sehr große Datei lesen wollen, ist es am besten, sie Stück für Stück zu kopieren. Probieren Sie den folgenden Code als beste Praxis aus.

$path = 'path_to_file_.txt';

$file = fopen($path, 'r');
$len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big
$output = fread( $file, $len );

while (!feof($file)) {
    $output .= fread( $file, $len );
}

fclose($file);

echo 'Output is: ' . $output;

25voto

Ziaur Rahman Punkte 958

Ich habe das gleiche Problem in php7.2 mit laravel 5.6 konfrontiert. Ich erhöhe einfach die Menge der Variablen memory_limit = 128M in der php.ini so einstellen, wie es meine Anwendungen erfordern. Es könnte 256M/512M/1048M sein.....Jetzt funktioniert es gut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X