Rumah >pangkalan data >tutorial mysql >Bolehkah Anda Menyimpan Ralat PHP dalam Pangkalan Data Daripada Fail Log?

Bolehkah Anda Menyimpan Ralat PHP dalam Pangkalan Data Daripada Fail Log?

Barbara Streisand
Barbara Streisandasal
2024-11-06 03:05:02759semak imbas

Can You Store PHP Errors in a Database Instead of a Log File?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn