Wie vermeiden Sie den "memory ... exhausted" - Fehler bei der Verwendung von debug_backtrace() in benutzerdefinierten error-handler?

Schrieb ich eine Fehlerbehandlung für meine website, die wie folgt aussieht:

function errorHandler($number, $string, $file, $line, $context, $type = '') {
//save stuff in DB
}

Denen ich mich so:

set_error_handler('errorHandler', E_ALL);

Speichere ich alle übergebenen Variablen in eine DB, sowie einen backtrace um mir zu helfen, Debuggen das problem:

print_r(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT), true)

Das problem ist, dass ich manchmal diese Fehlermeldung erhalten:

Allowed memory size of 134217728 bytes exhausted (tried to allocate 30084081 bytes)

Den Grund der Fehler-handler ausgeführt wurde, Wann gab es den oben genannten Fehler war, dass ich versuchte, verwenden Sie eine nicht definierte variable nach einen Amazon S3-Objekt (aus Ihrer PHP-AWS-Bibliothek). Ich gehe davon aus, da die Amazon AWS-Bibliothek ist so groß, dass der backtrace ziehen in eine Tonne von Daten, die bewirkt, dass die out-of-memory-Fehler (?).

Ich möchte ein backtrace, wenn möglich, die für das Debuggen, aber wie verhindere ich den Aufruf der debug_backtrace() Funktion verursacht einen fatal error (in meinem error-handler, das ist irgendwie ironisch..)?

InformationsquelleAutor Nate | 2014-07-23
Schreibe einen Kommentar