Comment gérer en toute sécurité les erreurs fatales en PHP ?

Susan Sarandon
Libérer: 2024-10-24 11:49:29
original
268 Les gens l'ont consulté

How to Safely Handle Fatal Errors in PHP?

Gérer en toute sécurité les erreurs fatales en PHP

Les capacités de gestion des erreurs de PHP incluent la détection des erreurs fatales telles que « Taille de mémoire autorisée épuisée ». Cette erreur se produit lorsqu'un script consomme trop de mémoire. Plutôt que d'augmenter la limite de mémoire, vous pouvez renvoyer un message personnalisé à l'utilisateur.

Une méthode efficace consiste à utiliser register_shutdown_function(). Cette fonction enregistre un rappel qui vérifie error_get_last(). En vérifiant l'erreur une fois l'exécution du script terminée, vous pouvez déterminer si une erreur fatale s'est produite et la gérer avec élégance.

Voici un exemple d'implémentation :

<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>
Copier après la connexion

Une fois exécuté, ce script affiche " Caught at shutdown", indiquant que l'erreur fatale a été interceptée dans la fonction d'arrêt.

Vous pouvez examiner le tableau $error dans la fonction d'arrêt pour déterminer la cause de l'erreur et prendre les mesures appropriées, comme réémettre le requête avec des paramètres différents ou renvoyant une réponse.

Il est important de noter que même s'il est recommandé de conserver error_reporting() à un niveau élevé (-1), vous devez toujours utiliser set_error_handler() et ErrorException pour toute autre gestion des erreurs. doit éviter les problèmes lors de l'exécution du script.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal