Mengendalikan Ralat Maut dalam PHP dengan Selamat
Keupayaan pengendalian ralat PHP termasuk menangkap ralat maut seperti "Saiz memori yang dibenarkan habis." Ralat ini berlaku apabila skrip menggunakan memori yang berlebihan. Daripada meningkatkan had memori, anda boleh mengembalikan mesej tersuai kepada pengguna.
Satu kaedah yang berkesan ialah menggunakan register_shutdown_function(). Fungsi ini mendaftarkan panggilan balik yang menyemak error_get_last(). Dengan menyemak ralat selepas skrip selesai dijalankan, anda boleh menentukan sama ada ralat maut telah berlaku dan mengendalikannya dengan anggun.
Berikut ialah contoh pelaksanaan:
<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 dilaksanakan, skrip ini mencetak " Terperangkap semasa penutupan," menunjukkan bahawa ralat maut telah ditangkap dalam fungsi penutupan.
Anda boleh memeriksa tatasusunan $error dalam fungsi penutupan untuk menentukan punca ralat dan mengambil tindakan yang sewajarnya, seperti mengeluarkan semula minta dengan parameter berbeza atau mengembalikan respons.
Perlu ambil perhatian bahawa semasa mengekalkan error_reporting() pada tahap tinggi (-1) disyorkan, anda masih harus menggunakan set_error_handler() dan ErrorException untuk semua pengendalian ralat lain perlu mengelakkan isu semasa pelaksanaan skrip.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat Maut dalam PHP dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!