Können PHP-Fehler in eine Datenbank statt in eine Fehlerprotokolldatei geschrieben werden?
PHP-Fehler werden normalerweise in der Standarddatei „error_log“ protokolliert. Zur einfacheren Verfolgung und Analyse kann es jedoch wünschenswert sein, sie stattdessen in einer Datenbank zu speichern. Dies ist zwar nicht direkt möglich, ohne einen benutzerdefinierten Fehlerhandler zu erstellen, kann aber mit einer einzigen globalen Änderung erreicht werden.
Implementierung eines benutzerdefinierten Fehlerhandlers
Der Schlüssel zur Kontrolle Die Art und Weise, wie Fehler behandelt werden, besteht darin, einen benutzerdefinierten Fehlerhandler zu erstellen. Dies kann mit der Funktion set_error_handler() erfolgen, die eine Callback-Funktion als Argument verwendet. Die Rückruffunktion sollte die folgende Signatur haben:
function error_handler($errno, $errstr, $errfile, $errline) {}
Innerhalb der Rückruffunktion können Sie festlegen, wie mit jedem Fehler umgegangen werden soll, einschließlich der Frage, ob er in einer Datenbank protokolliert werden soll.
Beispiel für die Fehlerprotokollierung in MySQL
Der folgende Code zeigt ein Beispiel für einen benutzerdefinierten Fehlerhandler, der PHP-Fehler in einer MySQL-Datenbank protokolliert:
function myErrorHandler($errno, $errstr, $errfile, $errline) { // Establish connection to MySQL database $conn = mysqli_connect("hostname", "username", "password", "database"); // Prepare SQL query to log error $query = "INSERT INTO error_log (number, string, file, line) VALUES (?, ?, ?, ?)"; $stmt = mysqli_prepare($conn, $query); // Bind parameters to SQL query mysqli_stmt_bind_param($stmt, "isss", $errno, $errstr, $errfile, $errline); // Execute SQL query to log error mysqli_stmt_execute($stmt); // Close database connection mysqli_close($conn); // Don't execute PHP internal error handler return true; } // Set user-defined error handler $old_error_handler = set_error_handler("myErrorHandler");
Nach dem Festlegen der benutzerdefinierten Fehlerhandler, alle PHP-Fehler werden durch Ihre benutzerdefinierte Fehlerbehandlungslogik weitergeleitet, einschließlich der Protokollierung in der MySQL-Datenbank.
Das obige ist der detaillierte Inhalt vonKönnen Sie PHP-Fehler in einer Datenbank statt in einer Protokolldatei speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!