Maison >développement back-end >tutoriel php >Comment gérer en toute sécurité les erreurs fatales en PHP ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 11:49:29274parcourir

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>

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!

Déclaration:
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