PHP tidak menyediakan cara konvensional untuk menangkap dan memulihkan dari kesalahan fatal. Ini karena pemrosesan biasanya tidak dapat dipulihkan setelah kesalahan fatal. String yang cocok dengan buffer output (seperti yang disarankan oleh posting asli teknik yang dijelaskan di PHP.net) jelas-jelas keliru. Itu tidak bisa diandalkan.
Memanggil fungsi mail () dari dalam metode penangan kesalahan juga terbukti bermasalah. Jika Anda memiliki banyak kesalahan, server email Anda akan dimuat dengan pekerjaan, dan Anda bisa menemukan diri Anda dengan kotak masuk gnarly. Untuk menghindari hal ini, Anda dapat mempertimbangkan menjalankan cron untuk memindai log kesalahan secara berkala dan mengirimkan pemberitahuan yang sesuai. Anda mungkin juga ingin melihat ke dalam perangkat lunak pemantauan sistem, seperti Nagios .
Untuk berbicara sedikit tentang mendaftarkan fungsi shutdown:
Memang benar bahwa Anda dapat mendaftarkan fungsi shutdown, dan itu jawaban yang bagus.
Intinya di sini adalah bahwa kita biasanya tidak mencoba untuk memulihkan dari kesalahan fatal, terutama tidak dengan menggunakan ekspresi reguler terhadap buffer output Anda. Saya merespons jawaban yang diterima , yang tertaut ke saran di php.net yang sejak itu telah diubah atau dihapus.
Saran itu adalah untuk menggunakan regex terhadap buffer output selama penanganan pengecualian, dan dalam kasus kesalahan fatal (terdeteksi oleh pencocokan terhadap teks kesalahan yang dikonfigurasi apa pun yang mungkin Anda harapkan), cobalah untuk melakukan semacam pemulihan atau pemrosesan lanjutan. Itu tidak akan menjadi praktik yang disarankan (saya percaya itu sebabnya saya tidak dapat menemukan saran asli juga. Saya baik mengabaikannya, atau komunitas php menghapusnya).
Mungkin perlu dicatat bahwa versi PHP yang lebih baru (sekitar 5.1) tampaknya memanggil fungsi shutdown lebih awal, sebelum panggilan balik buffering output diaktifkan. Dalam versi 5 dan sebelumnya, urutan itu adalah kebalikannya (panggilan balik buffering output diikuti oleh fungsi shutdown). Juga, karena sekitar 5.0.5 (yang jauh lebih awal dari versi 5.2.3 si penanya), objek dibongkar dengan baik sebelum fungsi shutdown terdaftar dipanggil, jadi Anda tidak akan dapat mengandalkan objek di dalam memori untuk melakukan banyak hal.
Jadi mendaftarkan fungsi shutdown tidak apa-apa, tetapi jenis tugas yang seharusnya dilakukan oleh fungsi shutdown mungkin terbatas pada beberapa prosedur shutdown yang lembut.
Kuncinya dibawa pulang di sini adalah hanya beberapa kata-kata bijak bagi siapa saja yang tersandung pada pertanyaan ini dan melihat saran dalam jawaban yang awalnya diterima. Jangan regex buffer output Anda.