3.Type syndical.
Prend en charge la déclaration et l'acceptation de plusieurs types différents. Il s'agit d'une collection de deux types ou plus.
4. type de retour statique. La prise en charge des types de retour statiques dans PHP 8 sera plus efficace.
5. Cartographie faible WeakMap. Permet aux clés des tableaux d'être placées dans des objets.
6. Changements de classe et utilisation
1. Héritage des paramètres variables (insipide), autorisé
De nouvelles fonctionnalités de PHP7 ? (Différence par rapport à PHP5)
2. Liaison statique tardive (LSB) (utile), encapsulation au niveau du framework et certains modèles de conception d'usine fonctionnent.
3. Vous pouvez maintenant utiliser la méthode suivante pour obtenir le nom de classe de l'objet
4. Désormais, new et instanceof peuvent être utilisés avec n'importe quelle expression, en utilisant new(expression)(... $args. ) et $obj instanceof(expression).
5. L'écriture est désormais autorisée.
6. Ajouter une interface Stringable (fonction générale, utilisée dans l'encapsulation du modèle de vue).
7. Trait peut désormais définir des méthodes privées abstraites.
3. Amélioration de l'utilisation de la référence de l'espace de noms : les classes, fonctions et constantes importées du même espace de noms peuvent désormais être importées en même temps via une instruction à usage unique
4. instancier une classe anonyme via une nouvelle classe
5 Les performances sont 2 fois supérieures à celles de php5.
6. Prise en charge 64 bits.
Pourquoi les performances de php7 sont-elles améliorées par rapport à php5 ?
3. Mécanisme d'appel de fonction amélioré. En optimisant le processus de transfert de paramètres, certaines instructions sont réduites et l'efficacité d'exécution est améliorée
Processus d'exécution PHP7 ?
Analyse lexicale, découpage du code source en plusieurs unités de chaîne (Token)
L'analyseur de syntaxe convertit le Token en un arbre de syntaxe abstraite ASTL'arbre de syntaxe abstraite est converti en opcodes (jeu d'instructions d'opcode)
La machine virtuelle interprète et exécute les opcodes (l'opcode est un ensemble d'identifiants d'instructions, correspondant à la fonction de traitement du handler)
En mode web, cycle de vie PHP ?
Cette étape réalise principalement les opérations d'initialisation du framework PHP et du moteur zend. Cette étape est généralement exécutée une fois au démarrage de SAPI. Pour FPM, elle est exécutée au démarrage du maître fpm. PHP charge le code de chaque extension et appelle sa routine d'initialisation de module (MINIT) pour appliquer certaines variables requises par le module, allouer de la mémoire, etc.
2. Phase d'initialisation de la demande (request init) :
Lorsqu'une demande de page survient, c'est une étape qui sera vécue avant que la demande ne soit traitée. Pour fpm, il s'agit d'une étape après que le processus de travail accepte une requête et lit et analyse les données de la requête. Au cours de cette étape, la couche SAPI cède le contrôle à la couche PHP et PHP initialise les variables d'environnement requises pour exécuter le script de cette requête.
3. Étape d'exécution du script PHP :
Le processus d'analyse et d'exécution du code PHP. Le moteur Zend prend le contrôle, compile le code du script PHP en opcodes et les exécute séquentiellement
4 Arrêt de la demande :
Une fois la demande traitée, elle entre dans la phase de fin et PHP démarrera le processus de nettoyage. À ce stade, le contenu de sortie sera vidé, le contenu de la réponse http sera envoyé, etc., puis il appellera la méthode RSHUTDOWN de chaque module dans l'ordre. RSHUTDOWN permet d'effacer la table des symboles générée lors de l'exécution du programme, c'est-à-dire d'appeler la fonction unset sur chaque variable.
5. Arrêt du module :
Cette phase est exécutée à la fermeture de SAPI et correspond à la phase d'initialisation du module. Cette phase nettoie principalement les ressources et ferme chaque module PHP. En même temps, la fonction hook d'arrêt du module de chaque extension sera rappelée. Cela se produit une fois que toutes les demandes ont été exécutées, comme l'arrêt de fpm. (C'est pour les SAPI tels que CGI et CLI, il n'y a pas de « requête suivante », donc le SAPI commence à se fermer immédiatement.)
Moteur Zend : le moteur Zend fournit des services de base pour PHP, notamment l'analyse lexicale, l'analyse syntaxique, la compilation d'arbres de syntaxe abstraite AST, l'exécution d'opcodes, la conception de variables PHP, la gestion de la mémoire et la gestion des processus.
Couche PHP : lie la couche SAPI et gère la communication avec elle. Elle fournit également une couche de contrôle cohérente pour la détection de safe_mode et open_basedir, et intègre des fonctions d'espace utilisateur telles que fopen(), fread() et fwrite() avec les fichiers. Connecté aux E/S du réseau.
SAPI : Y compris cli fpm, etc., qui fait abstraction des interfaces externes. Tant que le protocole SAPI est suivi, un serveur peut être implémenté.
Extension : le moteur zend fournit des fonctionnalités de base et des spécifications d'interface sur cette base, il peut être développé et étendu
L'implémentation sous-jacente des données PHP est une table de hachage (également appelée hashTable). )
PHP peut gérer automatiquement la mémoire et effacer les objets inutiles.
PHP utilise un mécanisme GC de comptage de références.
Chaque objet contient un compteur de référence refcount. Chaque référence est connectée à l'objet et 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érences d'un objet atteint zéro, PHP sait que vous n'avez plus besoin d'utiliser l'objet et libère l'espace mémoire qu'il occupe.
Il s'agit d'un modèle architectural de maître et de travailleur. Work gère les demandes, et le maître gère et recycle les processus enfants.
Pour optimisation, la configuration du nombre de processus a été modifiée.
Pour décrire brièvement : en raison du mode statique configuré auparavant, le nombre de processus par défaut était de 200. Plus tard, il y a eu une certaine concurrence, je devrais donc le changer en mode de configuration "troisième", configurer le nombre spécifié de processus, et il y a une valeur minimale et une valeur maximale (la valeur maximale est en fait oubliée ici, je pense juste qu'elle ne doit pas être illimitée, après tout, les ressources matérielles sont le plafond), puis augmenter dynamiquement le nombre de processus en fonction de la valeur réelle nombre de demandes.
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!