Cet article partagera avec vous le dernier résumé de la question conceptuelle des questions d'entretien PHP. Il a une certaine valeur de référence. Les amis qui en ont besoin peuvent s'y référer.
Recommandations associées : "Dernier résumé des questions de candidature pour les questions d'entretien PHP"
302 : Le transfert temporaire est réussi et le contenu demandé a été transféré vers le nouvel emplacement. - 401 : Non autorisé.
- 403 : Accès interdit.
- 500 : Erreur interne du serveur
-
Passage par valeur : le réel. les paramètres sont transmis. Les valeurs sont attribuées aux paramètres formels et les modifications apportées aux paramètres formels n'affecteront pas les valeurs des paramètres réels. - Passez par référence : transmettez l'adresse du paramètre réel au paramètre formel. Le paramètre réel et le paramètre formel pointent vers le même espace de stockage. Les modifications apportées aux paramètres de ligne affecteront la valeur du paramètre réel.
-
Type de création : les employés agissent comme des matières premières (prototype, usine, singleton, générateur, usine abstraite)
Type structurel : consiste à démonter l'assemblage (adaptateur, pont, masselotte, apparence, agent, combinaison, décoration)
Type comportemental : ordonné d'installer le modèle dans la parabole pour éviter toute observation (mémo, chaîne de responsabilité, commande, itérateur, médiateur, état, méthode modèle, visiteur, observateur, stratégie)
Habituellement, un projet est composé de L'équipe développe. , et chacun soumet le code qu'il a écrit au serveur de versions, et le chef de projet le gère en fonction de la version, ce qui facilite le contrôle de version, améliore l'efficacité du développement et garantit que l'ancienne version peut être renvoyée en cas de besoin.
L'essence de XSS (cross-site scripting Attack) est que l'attaquant insère du code malveillant dans la page Web et l'intègre lorsque l'utilisateur parcourt la page. Le code sera exécuté pour atteindre l’objectif d’attaquer les utilisateurs de manière malveillante.
Comment le prévenir ? Réponse : utilisez la fonction htmlspecialchars() pour filtrer le contenu soumis et matérialiser les symboles spéciaux dans la chaîne.
Dans toute l'architecture du site Web, le serveur Web (comme Apache) n'est que le distributeur. de contenu. Par exemple, si le client demande index.html, le serveur Web trouvera ce fichier dans le système de fichiers et l'enverra au navigateur. Ce qui est distribué ici, ce sont des données statiques.
Si la requête est index.php, une fois que le serveur Web aura reçu cette requête, il démarrera le programme CGI correspondant, voici l'analyseur PHP. Ensuite, l'analyseur PHP analysera le fichier php.ini, initialisera l'environnement d'exécution, traitera la requête, renverra le résultat traité au format spécifié par CGI, quittera le processus et le serveur Web renverra le résultat au navigateur. est un processus complet d'accès Web Dynamic PHP.
- Serveur Web : Désigne généralement des serveurs tels qu'Apache, Nginx, IIS, Lighttpd, Tomcat, etc.
- Application Web : Fait généralement référence à PHP, Java, Asp.net et d'autres applications.
- CGI : est un protocole d'échange de données entre le serveur Web et l'application Web.
- FastCGI : Identique à CGI, c'est un protocole de communication, mais il présente quelques optimisations en termes d'efficacité par rapport à CGI. De même, le protocole SCGI est similaire à FastCGI.
- PHP-CGI : est le programme d'interface de PHP (Web Application) au protocole CGI fourni par Web Server.
- PHP-FPM : est un programme d'interface pour le protocole FastCGI fourni par PHP (Web Application) au Serveur Web Il permet également une gestion des tâches relativement intelligente.
MVC est un modèle de développement, qui est principalement divisé en trois parties :
- m (modèle), qui est le modèle, est responsable du fonctionnement des données ;
- v (vue), qui est la vue, est responsable de l'affichage du premier plan
c (contrôleur), c'est-à-dire le contrôleur responsable de la logique métier-
PHP peut automatiquement. gérer la mémoire et effacer les objets qui ne sont plus nécessaires. PHP utilise un mécanisme de comptage de références (garbage collection). Chaque objet contient un compteur de référence Lorsqu'une référence est connectée à l'objet, le compteur est incrémenté de 1. Lorsque la référence quitte l'espace de vie ou est définie sur NULL, le compteur est décrémenté de 1. Lorsque le compteur de référence d'un objet atteint zéro, PHP libère l'espace mémoire qu'il occupe.
10. Mécanisme d'exploitation php-fpm
FastCGI est un protocole de communication entre les serveurs Web (tels que Nginx, Apache) et les programmes de traitement (tels que PHP). protocole de communication de la couche application. php-fpm est un gestionnaire de processus de modèle monothread bloquant en mode de fonctionnement PHP FastCGI. Il a une structure maître unique et multi-travailleurs. Le même processus de travail ne peut gérer qu'une seule requête à la fois. Une fois que PHP a traité la requête, il transmet le résultat analysé au serveur Web via le protocole FastCGI, et le serveur Web le renvoie à l'utilisateur.
Implémentation de base
PHP-FPM est une implémentation de fast-cgi, qui fournit des fonctions de gestion de processus, y compris les processus maîtres et de travail :
- Le maître crée et surveille les sockets, lance plusieurs processus de travail, obtient le statut de travailleur via la mémoire partagée, puis contrôle les processus de travail via des signaux
- le travailleur accepte librement les demandes
travailleur —Traitement des demandes
Le processus de travail accepte en permanence les demandes lorsqu'une demande arrive, il lira et analysera les données du protocole FastCGI. Une fois l'analyse terminée, le script PHP sera exécuté et. la demande sera clôturée une fois l'exécution terminée. Les étapes permettant à chaque travailleur de traiter les demandes sont les suivantes :
- En attente des demandes : le processus de travail est bloqué dans fcgi_accept_request() en attente de demandes.
- Analyser la demande : une fois la demande fastcgi arrivée, elle est reçue par le travailleur, puis commence à recevoir et à analyser les données de la demande jusqu'à ce que les données de la demande arrivent complètement.
- Initialisation de la requête : exécutez php_request_startup().
- Exécutez le script PHP.
- Fermer la demande.
Il existe un paramètre dans la structure du processus de travail pour enregistrer l'étape fpm_scoreboard_proc_s->request_stage dans laquelle se trouve actuellement le travailleur. Lors d'une requête, cette valeur sera définie sur les valeurs suivantes :
- FPM_REQUEST_ACCEPTING : Attente de la phase de demande.
- FPM_REQUEST_READING_HEADERS : Lire l'étape d'en-tête de la requête fastcgi.
- FPM_REQUEST_INFO : phase d'obtention des informations sur la demande. Cette phase enregistre la méthode demandée, la chaîne de requête, l'URI de la demande et d'autres informations dans la structure fpm_scoreboard_proc_s de chaque processus de travail. Cette opération nécessite un verrouillage car le processus maître l'exécutera également. cette structure.
- FPM_REQUEST_EXECUTING : Exécuter la phase de script PHP.
- FPM_REQUEST_END : Non utilisé.
- FPM_REQUEST_FINISHED : Traitement de la demande terminé.
master – gestion des processus
master ne reviendra plus après avoir appelé fpm_run(), mais entrera dans une boucle d'événement à partir de ce moment-là, master reviendra toujours. tourne autour de Plusieurs événements sont traités.Avant d'analyser ces événements en détail, nous présentons d'abord les trois différentes méthodes de gestion de processus de Fpm. Le mode spécifique à utiliser peut être spécifié via pm dans la configuration de conf, par exemple pm=dynamic.
- Mode statique (static) : Cette méthode est relativement simple. Au démarrage, le maître débourse un nombre correspondant de processus de travail en fonction de la configuration pm.max_children, c'est-à-dire le nombre de processus de travail. est fixe.
- Mode dynamique (dynamic) : Ce mode est plus couramment utilisé au démarrage de Fpm, un certain nombre de Workers seront initialisés selon la configuration pm.start_servers. Pendant le fonctionnement, si le maître constate que le nombre de travailleurs inactifs est inférieur au nombre configuré de pm.min_spare_servers (ce qui indique qu'il y a trop de demandes et que les travailleurs ne peuvent pas les gérer), il bifurquera le processus de travail, mais le nombre total des travailleurs ne peut pas dépasser pm.max_children. Si le maître constate que le nombre de travailleurs inactifs dépasse pm.max_spare_servers (indiquant qu'il y a trop de travailleurs inactifs), il tuera certains travailleurs pour éviter d'occuper trop de ressources. Le maître utilise ces quatre valeurs pour contrôler dynamiquement le nombre. des travailleurs.
- Mode Ondemand (ondemand) : ce mode est très similaire au cgi traditionnel. Il n'alloue pas de processus de travail au démarrage. Après une demande, il informe le processus maître de créer le processus de travail. après la demande, lancez ensuite le processus enfant pour le traitement. Le nombre total de travailleurs ne dépasse pas pm.max_children. Le processus de travail ne se terminera pas immédiatement une fois le traitement terminé. Il se terminera lorsque le temps d'inactivité dépasse pm.process_idle_timeout.
Le processus maître entre dans la boucle d'événements fpm_event_loop(). Dans cette méthode, le maître traitera cycliquement plusieurs événements IO et timer enregistrés par le maître. Lorsqu'un événement est déclenché, le gestionnaire spécifique sera. rappelé pour traitement.
11. Processus d'allocation de mémoire
Pré-demandez un morceau de mémoire et gérez-le en interne lorsque l'application demande de la mémoire, elle le fera à partir de là. partie, et elle sera publiée en premier lors de sa sortie. Retour à la gestion de la mémoire. Cette conception peut éviter la consommation de performances supplémentaire du système d'exploitation causée par l'application et la libération d'une petite mémoire.
12. Implémentation du tableau PHP
L'implémentation sous-jacente du tableau PHP est une table de hachage (également appelée hashTable), qui accède directement au stockage mémoire en fonction de la clé ( Clé) Dans la structure des données de position, il existe une fonction de mappage entre sa clé et sa valeur. La valeur de hachage obtenue par la clé via la fonction de mappage peut être directement indexée sur la valeur correspondante sans avoir besoin d'une comparaison de mots clés. , la valeur de hachage n'est pas prise en compte. Les conflits de colonnes, l'efficacité de recherche des tables de hachage est très élevée et la complexité temporelle est O (1).
13. Injection de dépendances
Concept : fait référence à la manière dont les autres services dont dépend le service ne sont pas créés par le service lui-même, mais sont transmis de l'extérieur.
Comment y parvient-on ? Réponse : De manière générale, elle est mise en œuvre par réflexion.
Quel problème
peut-il résoudre ? Réponse : Réduisez le couplage entre les modules de service. Lors de l'écriture du code, vous n'avez pas besoin de prendre en compte l'implémentation spécifique des services externes. Il vous suffit d'utiliser le service basé sur l'interface.
14. Orienté objet
Concept : L'orientation objet est une méthode de conception de programmes, qui contribue à améliorer la réutilisabilité des programmes et rend la structure du programme plus claire.
Caractéristiques principales : encapsulation, héritage, polymorphisme.
Cinq principes de base : Principe de responsabilité unique ; Principe de remplacement ; Principe de séparation des interfaces ;
Cet article est apparu pour la première fois sur le site Web LearnKu.com.
Recommandations associées : "Résumé des questions d'entretien PHP en 2021 (Collection) "
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!