Maison  >  Article  >  développement back-end  >  Débordement de pile PHP

Débordement de pile PHP

WBOY
WBOYoriginal
2024-08-29 13:05:331036parcourir

Stack Overflow dans la programmation est une sorte d'erreur qui peut causer un problème grave à notre programme et même l'empêcher de répondre comme prévu. Stack Overflow est le même dans tous les langages de programmation, et si nous parlons de PHP, ils se comportent également comme prévu. Dans ce problème, certains programmes informatiques commencent à utiliser de plus en plus de mémoire que la disponibilité réelle. Dans un langage de programmation, nous avons une pile d'appels qui est chargée de gérer les requêtes et de les conserver. Ce n'est rien d'autre qu'un tampon. Dans la section à venir, nous discuterons en détail de l'erreur de débordement de pile.

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Syntaxe :

Comme nous savons qu'il s'agit d'une erreur survenue et que nous n'avons donc aucune syntaxe pour la faire se produire, cela se produit généralement lorsqu'une partie du programme tente d'occuper plus d'espace que celui disponible. Voyons la mise en mémoire tampon de sortie pour obtenir une erreur fatale dans un langage de programmation.

par ex. :

1) max_execution_time()

2) set_time_limit()

3) etc

Comme vous pouvez le voir dans les lignes de code ci-dessus, nous pouvons utiliser certaines fonctions et attribuer certaines valeurs pour obtenir des erreurs fatales en PHP ou dans n'importe quel langage de programmation. Nous pouvons également résoudre des problèmes de mémoire si nous essayons d’utiliser plus de mémoire que celle disponible. Mais il n’y a pas de syntaxe pour cette erreur car il ne s’agit pas d’une méthode ou d’un utilitaire ; cela peut se produire à tout moment lorsque nous essayons d’utiliser plus de ressources que celles disponibles. Dans la section à venir, nous verrons plus en détail son fonctionnement.

Comment fonctionne le débordement de pile en PHP ?

Comme nous le savons maintenant, le débordement de pile est une erreur qui peut entraîner l'arrêt de notre programme et un comportement indésirable. Ce n'est pas une exception, mais plutôt une erreur en PHP. Dans un langage de programmation, nous avons une pile d'appels qui n'est rien d'autre qu'un tampon chargé de gérer la requête. Dans un langage de programmation, on décide de la taille au début de l'exécution du programme ; Voyons quelques facteurs qui déterminent la taille de la pile d'appels, voir ci-dessous ;

1) langue du programme

2) Architecture du programme

3) Last est la quantité totale de mémoire disponible.

L'erreur de débordement de pile nécessite une très grande quantité de ce qui est disponible, ce qui entraîne une erreur et peut également faire planter le système. parfois, cela peut nécessiter toute la mémoire disponible dans le système. C'est la partie du programme qui peut provoquer cette situation. En bref, l'erreur se produit lorsque nous essayons d'utiliser plus de mémoire que la mémoire allouée à notre programme. Nous pouvons avoir un certain programme dans lequel nous essayons d'appeler des méthodes à partir des méthodes ; supposons que nous ayons 4 à 5 méthodes qui s'appellent continuellement les unes des autres, comme la fonction A() appelle la fonction b(), elle appelle à son tour la fonction c() suivie de la fonction D() et ainsi de suite, mais à la fin quand nous avons obtenu l'entrée, cela peut entraîner l'exécution de la fonction ou de cette boucle de méthodes un nombre infini de fois, et elle continuera à s'exécuter après cela, nous pouvons nous rendre compte qu'elle avait occupé la mémoire de la pile qui lui était allouée. Lorsque nous utilisons la récursion en PHP ou dans n'importe quel langage de programmation, nous pouvons provoquer un débordement de pile ou toute erreur fatale si la fonction n'est pas utilisée ou gérée correctement, il est donc toujours recommandé d'utiliser des variables globales ou des variables statiques pour éviter la boucle infinie en récursion. Pour éviter cela, nous pouvons effectuer des tests du système et également rédiger quelques cas de test pour y jeter un œil.

Nous pouvons éviter que ce type d'erreur fatale ne se produise dans un langage de programmation grâce à certaines précautions voir ci-dessous ;

1) Effectuer des tests du système

2) Évitez d'utiliser la récursivité ou la vérification stricte

3) L'appel de fonctions les unes depuis les autres ou en boucle doit être évité ; nous devrions également vérifier la variable locale et essayer d'optimiser le code autant que possible car la variable locale occupe également de l'espace dans le système. Il s'agit d'une erreur d'exécution qui se produit lorsque le programme manque de mémoire en raison d'un événement inhabituel lors de la programmation.

Points à retenir lorsque vous travaillez avec des erreurs en PHP ;

  • Des erreurs de débordement de pile se produisent car la consommation de mémoire est supérieure à celle allouée.
  • Cela peut être évité en optimisant le code, en essayant également d'analyser la variable locale
  • La récursion doit être strictement analysée ; si nous utilisons la récursivité, essayez d'utiliser les variables statiques ou globales pour éviter qu'elle ne reste bloquée dans des boucles infinies.
  • Ceci n'est pas une fonction ou une méthode. Il s'agit d'une erreur qui peut faire planter le système si elle n'est pas gérée correctement.

Exemples

1) Dans cet exemple, nous essayons d'exécuter une boucle un nombre infini de fois. Cela s'exécutera un temps infini et peut entraîner une erreur de débordement de pile. Une fois que la mémoire de la pile ou de la pile d'appels sera occupée, cela entraînera une erreur de débordement de pile. Vous trouverez ci-dessous un programme simple pour que les débutants puissent mieux le comprendre voir ci-dessous ;

Code :

<?php
print("Demo for stack overflow in php !! ");
while (1){
print("will run infinite time and lead to stack overflow when the stack overblown !!!");
}
?>

Sortie :

Débordement de pile PHP

Conclusion

Le débordement de pile est une erreur qui peut provoquer ou conduire à un crash du système. pour éviter cette erreur, nous pouvons faire preuve de prudence lors du codage et également optimiser notre code, etc. Il s'agit d'une erreur d'exécution qui se produit uniquement au moment de l'exécution.

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
Article précédent:Trace de la pile PHPArticle suivant:Trace de la pile PHP