Maison  >  Article  >  développement back-end  >  Comment gérer les erreurs « Taille de mémoire autorisée épuisée » en PHP avec une perturbation minimale

Comment gérer les erreurs « Taille de mémoire autorisée épuisée » en PHP avec une perturbation minimale

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 11:48:29327parcourir

How to Handle 'Allowed Memory Size Exhausted' Errors in PHP with Minimal Disruption

Gestion des erreurs « Taille de mémoire autorisée épuisée » en PHP

Lorsque vous travaillez avec des scripts qui renvoient des réponses JSON, rencontrer l'erreur « Taille de mémoire autorisée épuisée » peut être un problème . Pour éviter d'augmenter la limite de mémoire, vous souhaiterez peut-être informer l'utilisateur que sa requête a dépassé le seuil de mémoire.

Attraper les erreurs fatales

En PHP, vous ne pouvez pas détecter directement les erreurs fatales comme le épuisement de la taille de la mémoire. Cependant, vous pouvez utiliser la fonction register_shutdown_function pour enregistrer un rappel qui vérifie error_get_last().

<code class="php">register_shutdown_function(function() {
    $error = error_get_last();
    if ($error) {
        echo 'An error occurred: ' . $error['message'];
    }
});</code>

Gestion de la sortie d'erreur

Pour éviter que l'erreur fatale ne fasse planter le script, vous devez gérer le sortie générée par le code incriminé. Vous pouvez utiliser l'opérateur @ (non recommandé) ou définir ini_set('display_errors', false).

Exemple

<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 ($error) {
        echo 'Memory limit exhausted. Please try reissuing the request with different parameters.';
    }
});</code>

Lors de l'exécution de ce script avec une utilisation excessive de la mémoire, il affichera le message d'erreur approprié, informant l'utilisateur de faire des ajustements pour réduire la consommation de mémoire.

Considérations

Gardez error_reporting() élevé pour garantir que les autres erreurs sont toujours visibles. Pour les erreurs non fatales, pensez à utiliser set_error_handler() et ErrorException pour la gestion des erreurs.

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