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

Barbara Streisand
Lepaskan: 2024-10-24 16:50:02
asal
444 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!