Maison > développement back-end > tutoriel php > Une brève analyse de la gestion des erreurs PHP, du chargement automatique, de la mémoire de la pile et du mode d'exécution

Une brève analyse de la gestion des erreurs PHP, du chargement automatique, de la mémoire de la pile et du mode d'exécution

零到壹度
Libérer: 2023-03-23 16:10:02
original
2164 Les gens l'ont consulté

Le contenu de cet article est de partager avec vous une brève analyse de la gestion des erreurs PHP, du chargement automatique, de la mémoire de la pile et du mode de fonctionnement. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. 🎜>

PhpGestion des erreurs

PhpNiveau d'erreur :

E_ERROR est une erreur fatale qui mettra fin au script. La valeur est 1

E_WARNING Erreur d'avertissement, donne une invite et ne mettra pas fin à l'opération.

E_PARSE Les erreurs d'analyse de syntaxe lors de la compilation sont uniquement. généré par l’analyseur. La valeur est 4

E_NOTICE notifie les erreurs pendant l'exécution, indiquant que le script peut rencontrer des erreurs. La valeur est 8

E_CORE_ERROR lors de l'initialisation de PHP. startup Une erreur fatale s'est produite pendant le processus. Cette erreur est similaire à E_ERROR, mais est générée par le cœur du moteur PHP. La valeur est 16

E_CORE_WARNING Un avertissement (erreur non fatale) survenu lors du démarrage de l'initialisation de PHP. Similaire à E_WARNING, mais généré par le cœur du moteur PHP. La valeur est 32

E_COMPILE_ERROR Erreur fatale à la compilation. Similaire à E_ERROR, mais généré par le moteur de script Zend. La valeur est 64

E_COMPILE_WARNING avertissement au moment de la compilation (erreur non fatale). Similaire à E_WARNING, mais généré par le moteur de script Zend. La valeur est 128

E_USER_ERROR Message d'erreur généré par l'utilisateur. Similaire à E_ERROR, mais est généré par l'utilisateur à l'aide de la fonction PHP trigger_error() dans le code. La valeur est 256

E_USER_WARNING Message d'avertissement généré par l'utilisateur. Similaire à E_WARNING, mais est généré par l'utilisateur à l'aide de la fonction PHP trigger_error() dans le code. La valeur est 512

E_USER_NOTICE Informations de notification générées par l'utilisateur. Similaire à E_NOTICE, mais est généré par l'utilisateur à l'aide de la fonction PHP trigger_error() dans le code. La valeur 1024

E_STRICT permet à PHP de suggérer des modifications au code pour assurer la meilleure interopérabilité et compatibilité ascendante du code. La valeur est 2048

E_RECOVERABLE_ERROR, une erreur fatale qui peut être détectée. Cela indique qu'une erreur potentiellement dangereuse s'est produite, mais n'a pas rendu le moteur PHP instable. Si l'erreur n'est pas détectée par un gestionnaire défini par l'utilisateur (voir set_error_handler()), elle deviendra un E_ERROR et le script se terminera. La valeur est 4096

Notification d'exécution E_DEPRECATED. Lorsqu'il est activé, un avertissement sera émis concernant le code qui pourrait ne pas fonctionner correctement dans les versions futures. La valeur est 8192

E_USER_DEPRECATED Message d'avertissement généré par l'utilisateur. Similaire à E_DEPRECATED, mais est généré par l'utilisateur à l'aide de la fonction PHP trigger_error() dans le code. La valeur 16384

E_ALL représente toutes les informations d'erreur et d'avertissement à l'exception de E_STRICT. La valeur est 30719

Erreurs affichées ou masquées à l'aide de combinaisons d'opérateurs au niveau du bit (jugement d'autorisation binaire)

PhpÀ propos de la configuration des erreurs

error_reporting Définir le niveau de rapport d'erreurs, Le niveau le paramètre peut être vu ci-dessus

La valeur par défaut est E_ALL & ~E_NOTICE, ce qui signifie que toutes les erreurs sauf E_NOTICE et E_STRICT seront affichées

Le niveau d'erreur E_STRICT n'est pas inclus dans E_ALL Vous devez explicitement activer ce niveau pour apparaître

Il n'y a aucun moyen de le faire. utiliser des constantes de niveau d'erreur en dehors de PHP Significatif, vous pouvez utiliser des nombres décimaux à la place, tels que 2147483647, y compris toutes les erreurs

display_errors S'il faut afficher les erreurs dans le screen

Bien que vous puissiez utiliser ini_set pour le réinitialiser, il ne peut pas être défini lorsqu'une erreur fatale se produit dans php

display_startup_errors S'il faut afficher les erreurs au démarrage

log_errors S'il faut enregistrer les informations d'erreur du script dans log

log_errors_max_len

Définissez le nombre maximum d'octets dans log_errors. Les informations sur la source de l'erreur seront ajoutées à error_log. La valeur par défaut est 1024. Si la valeur est 0, il n'y a aucune limite à la longueur. Ce paramètre de longueur limite les erreurs enregistrées, les erreurs affichées et $php_errormsg.

ignore_repeated_errors

Ne pas enregistrer les messages d'erreur répétés,

ignore_repeated_source

Lorsque vous ignorez les messages répétés, la source du message est également ignorée. Lorsque ce paramètre est activé, les messages en double n'enregistreront pas s'ils ont été générés par des fichiers différents ou des lignes différentes de code source.

report_memleaks

Si ce paramètre est défini sur Off, les informations de fuite de mémoire ne seront pas affichées (dans stdout ou journal au milieu). Ce rapport sera envoyé à stderr sur les plateformes Posix. Sous Windows, il sera envoyé au débogueur à l'aide de OutputDebugString(), et pourra être consulté avec des outils comme » DbgView. Ceci n'est efficace que pour la compilation de débogage, et error_reporting doit contenir E_WARNING pour fonctionner

track_errors

si activé, la dernière erreur existera toujours dans la variable $php_errormsg.

html_errors

Fermez la balise HTML dans le message d'erreur. Ce nouveau message d'erreur au format HTML est cliquable et dirige l'utilisateur vers une page de référence qui décrit l'erreur ou la fonction à l'origine de l'erreur. Ces références concernent les paramètres de docref_root et docref_ext.

error_prepend_string string

Le contenu affiché avant le message d'erreur.

error_append_string string

Le contenu affiché après le message d'erreur.

error_log

Définit le fichier dans lequel les erreurs de script seront enregistrées. Le fichier doit être accessible en écriture par l'utilisateur du serveur Web. Si la valeur spéciale syslog est définie, des messages d'erreur sont envoyés au consignateur système. Sous Unix et les systèmes similaires, syslog(3) est utilisé, et sur les systèmes de type Windows NT, le journal des événements est utilisé. La journalisation système n'est pas prise en charge sous Windows 95. Voir : syslog(). Si cette configuration n'est pas définie, les messages d'erreur sont envoyés au journal d'erreurs SAPI. Par exemple, apparaît dans le journal des erreurs d'Apache ou est envoyé à stderr dans la CLI.

Compréhension personnelle des méthodes et de l'utilisation liées à la gestion des erreurs

debug_backtrace - Générer une trace arrière (backtrace). Vous pouvez définir des paramètres pour limiter le nombre de piles renvoyées

peut trouver les informations de pile lors de l'appel de la fonction, ce qui est très utile pour. dépannage, et le débogage de tp est similaire à

debug_print_backtrace(); imprime le traceback directement, similaire à debug_backtrace,

error_clear_last — efface le dernier error

error_get_last — Obtenez la dernière erreur survenue

error_log — Envoyez le message d'erreur à un endroit, vous pouvez enregistrer l'erreur dans un fichier, mais le message d'erreur ne peut pas être nul. Restaurez la fonction de gestion des erreurs précédente,

restore_exception_handler — Restaurez la fonction de gestion des exceptions précédemment définie.


set_error_handler — Définir la fonction de gestion des erreurs définie par l'utilisateur, qui doit être définie avant l'erreur

Les erreurs des niveaux suivants ne peuvent pas être définies par la fonction utilisateur pour gérer : E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING et la plupart des E_STRICT générés dans le fichier où la fonction set_error_handler() est appelée.

Tout comme le paramètre ini de error_reporting peut contrôler l'affichage des erreurs, le deuxième paramètre peut être utilisé pour bloquer le déclenchement de error_handler. Sans ce masque, error_handler sera appelé à chaque erreur, quelle que soit la manière dont error_reporting est défini.

set_exception_handler — Définir la fonction de gestion des exceptions définie par l'utilisateur

trigger_error — Générer un message d'erreur/d'avertissement/de notification au niveau de l'utilisateur

user_error — alias pour trigger_error

register_shutdown_function est une fonction d'enregistrement exécutée après le script de terminaison PHP. Le premier paramètre prend en charge la fonction, et un tableau contenant des instructions pour instancier la classe et les méthodes de classe (la classe sera instanciée en premier lors de l'enregistrement (tant que le) ; l'inscription est réussie, toute erreur peut être capturée)


Php Chargement automatique

Opinion personnelle

La principale différence entre spl_autoload_register et __autoload est

__autoload C'est juste qu'une fonction ne peut être définie qu'une seule fois en php. Si vous souhaitez charger des plug-ins, etc., vous devez constamment faire des jugements if else ou composer, ce qui sera très gênant

spl_autoload_register peut être basé sur le dossier, ou un plug-in, personnaliser diverses fonctions de traitement, créer une file d'attente chargée automatiquement et continuer à rechercher en fonction de la file d'attente jusqu'à ce que la file d'attente soit terminée ou renvoie vrai ( le retour par défaut de true lorsqu'un fichier est trouvé)

Mémoire de la pile( Compréhension personnelle)

Heap :

Pile : Quelques variables de type de base définies dans les fonctions et les variables de référence des objets sont toutes dans l'espace de pile. Lorsqu'elles dépassent la portée, elles seront automatiquement publiées

Supplément d'information :

Tas :

Lorsque les variables définies dans le fichier sont modifiées statiquement, elles seront remplacées par la zone de données globales et ne seront pas occuper la mémoire de la pile

Stack:

La mémoire de la pile stocke généralement les informations d'appel de fonction et variables déclarées dans la fonction. Étant donné que les appels de fonction sont récursifs, la fonction externe doit être appelée avant la fonction interne. La fonction est chargée et exécutée en premier, et elle doit attendre que la fonction interne appelée soit terminée avant de pouvoir se terminer. -le mécanisme de dernière sortie est la raison pour laquelle on l'appelle mémoire de pile.

PS : Lors de la compilation, le compilateur va d'abord collecter toutes les variables définies dans cette fonction et les mettre au début de la fonction pour demander de la mémoire, donc l'ordre dans lequel elles sont affiché et retiré de la pile n'est pas ce que vous écrivez. L'ordre du programme est défini, mais la pile est poussée vers l'avant lorsque la fonction est exécutée et est sortie une fois l'exécution de la fonction terminée.

Autres :

Const, global et statique sont tous stockés dans des données globales après modification Zone

Les variables super globales et les variables globales sont toutes des variables statiques et sont stockées dans la zone de données globales

Il y a moins d'informations. et attend une correction et une amélioration

PhpwebMode Exécution

.

PhpMode d'exécution :

1 ) Les CGI (Common Gateway Interface/Common Gateway Interface)

sont généralement des programmes exécutables, tels que des fichiers EXE, et les serveurs WEB occupent chacun des processus différents, et généralement un programme CGI ne peut en gérer qu'un seul. demande de l'utilisateur. De cette façon, lorsque le nombre de requêtes utilisateur est très important, cela occupera une grande quantité de ressources système, telles que la mémoire, le temps CPU, etc., ce qui entraînera de faibles performances.

  1. 2.

    FastCGI (Résident CGI / Long-Live CGI)

FastCGI est une version améliorée de FastCGI est comme un CGI de longue durée. Elle peut être exécutée à tout moment, tant qu'elle est activée, il ne faudra pas de temps pour Fork à chaque fois (c'est la chose la plus critiquée à propos de CGI). mode fork-and-execute).

FastCGI est une interface évolutive et haut débit pour la communication entre les serveurs HTTP et les langages de script dynamiques. Les serveurs HTTP les plus populaires prennent en charge FastCGI, notamment Apache, Nginx et lighttpd. Dans le même temps, FastCGI est également pris en charge par de nombreux langages de script, notamment PHP.

Le mode d'interface FastCGI adopte une structure C/S, qui peut séparer le serveur HTTP et le serveur d'analyse de script, et démarrer un ou plusieurs démons d'analyse de script sur le serveur d'analyse de script. Chaque fois que le serveur HTTP rencontre un programme dynamique, celui-ci peut être transmis directement au processus FastCGI pour exécution, puis le résultat est renvoyé au navigateur. Cette méthode permet au serveur HTTP de traiter exclusivement les requêtes statiques ou de renvoyer les résultats du serveur de script dynamique au client, ce qui améliore considérablement les performances de l'ensemble du système d'application.

Php-fpm est le gestionnaire fastcgi fourni avec PHP

3) CLI (Command Line Run/Command Line Interface)

  1. 4. Mode module Web (le mode dans lequel les serveurs Web tels que Apache run)

Ce mode est une extension d'Apache basée sur cgi

  1. 5. ISAPI (Internet Server Application Program Interface) est un ensemble d'interfaces API pour les services WEB fournis par Microsoft, qui peuvent implémenter ce CGI fournit Toutes les fonctions ont été étendues sur cette base, comme la fourniture d'une interface d'application de filtre. Les applications ISAPI sont principalement utilisées sous la forme de bibliothèques dynamiques DLL, qui peuvent être exécutées après avoir été demandées par l'utilisateur. Elles ne disparaîtront pas immédiatement après le traitement d'une demande de l'utilisateur, mais continueront à résider dans la mémoire et attendront les autres entrées de l'utilisateur. être traité. De plus, l'application ISAPI DLL et le serveur WEB sont dans le même processus, et l'efficacité est nettement supérieure à celle de CGI.

Php2 espèces et webInteraction du serveur :

Nginx :

L'utilisateur lance une requête et utilise la poignée de main actuelle de nginx. Lorsque nginx la reçoit, il la transmet à php-fpm pour traitement. Lorsque php-fpm est occupé, nginx renvoie 504 getway

<.>

Apache :

Apache dispose de 3 modes de fonctionnement, prefork, worker, Event,

Créer différents processus selon différents modes Lorsque les processus et les threads reçoivent le php pertinent, ils sont transmis au module Apache pour traitement

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!

Étiquettes associées:
php
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal