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

Patricia Arquette
Libérer: 2024-10-24 11:48:29
original
326 Les gens l'ont consulté

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

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!