Bolehkah Ralat PHP Ditulis ke Pangkalan Data Daripada Fail Log Ralat?
Ralat PHP biasanya dilog masuk ke fail error_log standard, tetapi mungkin lebih baik untuk menyimpannya dalam pangkalan data sebaliknya untuk penjejakan dan analisis yang lebih mudah. Walaupun ini tidak dapat dilakukan secara langsung tanpa membuat pengendali ralat tersuai, ia boleh dicapai dengan satu perubahan global.
Melaksanakan Pengendali Ralat Tersuai
Kunci untuk mengawal cara ralat dikendalikan adalah dengan mencipta pengendali ralat tersuai. Ini boleh dilakukan menggunakan fungsi set_error_handler(), yang mengambil fungsi panggil balik sebagai hujahnya. Fungsi panggil balik harus mempunyai tandatangan berikut:
function error_handler($errno, $errstr, $errfile, $errline) {}
Di dalam fungsi panggil balik, anda boleh menentukan cara setiap ralat harus dikendalikan, termasuk sama ada untuk melogkannya ke pangkalan data.
Contoh Ralat Mengelog ke MySQL
Kod berikut menunjukkan contoh pengendali ralat tersuai yang merekodkan ralat PHP ke pangkalan data MySQL:
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");
Selepas menetapkan yang ditentukan pengguna pengendali ralat, semua ralat PHP akan dihalakan melalui logik pengendalian ralat tersuai anda, termasuk log masuk ke pangkalan data MySQL.
Atas ialah kandungan terperinci Bolehkah Anda Menyimpan Ralat PHP dalam Pangkalan Data Daripada Fail Log?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!