Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menangkap Ralat \'Saiz Memori yang Dibenarkan Habis\' Dengan Anggun dalam PHP?

Bagaimana untuk Menangkap Ralat \'Saiz Memori yang Dibenarkan Habis\' Dengan Anggun dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-10-24 16:50:02445semak imbas

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

Menangkap Ralat 'Saiz Memori yang Dibenarkan Habis' Dengan Anggun dalam PHP

Mengendalikan ralat maut, seperti ralat 'Saiz memori yang dibenarkan habis', boleh menjadi penting untuk memastikan kestabilan dan kemesraan pengguna aplikasi PHP. Walaupun meningkatkan had ingatan dengan ini_set() boleh menjadi penyelesaian pantas, ia bukan selalunya pilihan terbaik.

Untuk menangkap ralat maut dengan lebih berkesan, pertimbangkan untuk menggunakan register_shutdown_function(). Dengan mendaftarkan fungsi panggil balik menggunakan kaedah ini, anda boleh menyemak ralat menggunakan error_get_last() pada penamatan skrip. Berikut ialah contoh:

<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>

Apabila menjalankan kod ini, anda akan melihat output "Terperangkap semasa penutupan" kerana ralat maut seperti 'Saiz memori yang dibenarkan habis' menamatkan skrip, menyebabkan fungsi penutupan menangkap ralat.

Anda boleh mengakses butiran ralat dalam tatasusunan $error dalam fungsi penutupan dan menyesuaikan respons anda dengan sewajarnya. Sebagai contoh, anda boleh mengubah hala permintaan ke URL lain atau cuba memproses permintaan dengan parameter yang berbeza.

Walaupun pengendalian ralat dengan register_shutdown_function() boleh berkesan untuk menangkap ralat yang membawa maut, anda disyorkan untuk menetapkan error_reporting() tinggi (-1) dan gunakan pengendalian ralat dengan set_error_handler() dan ErrorException untuk semua ralat lain.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Ralat \'Saiz Memori yang Dibenarkan Habis\' Dengan Anggun dalam PHP?. 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