Wie kann ich den Fehler „Erlaubte Speichergröße erschöpft' in PHP ordnungsgemäß abfangen?

Barbara Streisand
Freigeben: 2024-10-24 16:50:02
Original
544 Leute haben es durchsucht

How to Catch 'Allowed Memory Size Exhausted' Errors Gracefully in PHP?

Fehler „Zulässige Speichergröße erschöpft“ ordnungsgemäß in PHP abfangen

Schwerwiegende Fehler wie Fehler „Zulässige Speichergröße erschöpft“ können behandelt werden entscheidend für die Gewährleistung der Stabilität und Benutzerfreundlichkeit von PHP-Anwendungen sein. Das Erhöhen des Speicherlimits mit ini_set() kann zwar eine schnelle Lösung sein, ist jedoch nicht immer die beste Option.

Um schwerwiegende Fehler effektiver abzufangen, sollten Sie die Verwendung von register_shutdown_function() in Betracht ziehen. Durch die Registrierung einer Rückruffunktion mit dieser Methode können Sie bei der Skriptbeendigung mithilfe von error_get_last() nach Fehlern suchen. Hier ist ein Beispiel:

<code class="php">ini_set('display_errors', false);
error_reporting(-1);

set_error_handler(function($code, $string, $file, $line) {
    throw new ErrorException($string, null, $code, $file, $line);
});

register_shutdown_function(function() {
    $error = error_get_last();
    if (null !== $error) {
        echo 'Caught at shutdown';
    }
});

try {
    while (true) {
        $data .= str_repeat('#', PHP_INT_MAX);
    }
} catch (\Exception $exception) {
    echo 'Caught in try/catch';
}</code>
Nach dem Login kopieren

Wenn Sie diesen Code ausführen, werden Sie die Ausgabe „Beim Herunterfahren abgefangen“ bemerken, da schwerwiegende Fehler wie „Zulässige Speichergröße erschöpft“ das Skript beenden und dazu führen, dass die Shutdown-Funktion das abfängt Fehler.

Sie können auf die Fehlerdetails im $error-Array innerhalb der Shutdown-Funktion zugreifen und Ihre Reaktion entsprechend anpassen. Beispielsweise könnten Sie die Anfrage an eine andere URL umleiten oder versuchen, die Anfrage mit anderen Parametern zu verarbeiten.

Während die Fehlerbehandlung mit register_shutdown_function() effektiv sein kann, um schwerwiegende Fehler abzufangen, wird empfohlen, error_reporting() auf einen hohen Wert zu setzen (-1) und verwenden Sie die Fehlerbehandlung mit set_error_handler() und ErrorException für alle anderen Fehler.

Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „Erlaubte Speichergröße erschöpft' in PHP ordnungsgemäß abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage