Maison  >  Article  >  développement back-end  >  Explication détaillée de l'exécution de l'interpréteur du noyau PHP

Explication détaillée de l'exécution de l'interpréteur du noyau PHP

*文
*文original
2018-01-05 14:13:481860parcourir

Cet article présente principalement des informations pertinentes sur le processus d'exécution de l'interpréteur pour l'exploration du noyau PHP. Les amis dans le besoin peuvent s'y référer. J'espère que cela aide tout le monde.

cli (Command Line Interface) est le mode ligne de commande de PHP. Maintenant, ce SAPI est installé par défaut. Après avoir installé PHP sur le serveur, un fichier exécutable sera généralement généré. usr /local/bin/php, nous pouvons alors utiliser la commande suivante pour exécuter un script PHP sous SHELL :

/usr/local/bin/php -f test.php

Prenez CLI SAPI comme exemple pour analyser la partie centrale de l'exécution de php. CLI est le mode de ligne de commande php. Ce SAPI est installé par défaut. Une fois PHP installé côté serveur, un fichier exécutable est généré, qui peut être exécuté en appelant la commande PHP dans le shell.

PHP -f XX.php

Processus d'exécution :

Analyser les paramètres de ligne de commande

Initialiser l'environnement ; Compilez et exécutez le code PHP ;

Nettoyez l'environnement et quittez

Dans la troisième étape, comment exécuter le script PHP : Terminez la troisième étape en appelant php_execute_script(handle_file), qui finira par appeler zend_execute_scipts(…). Cette fonction est une fonction à paramètre variable qui peut exécuter plusieurs scripts PHP en même temps.


Dans la fonction zend_execut_scripts(…..), le noyau appelle les deux fonctions (zend_compile_file)( compile_file ), (*zend_execute)( zend_op_array ); Le fichier de script php spécifié par le paramètre, cette fonction renverra un pointeur de structure zend_op_array ;

Le paramètre passé à zend_execute est la valeur de retour de zend_compile_file, et l'opcode commence à être exécuté.


Ces deux fonctions sont Zend API, qui est un pointeur de fonction qui renvoie une méthode spécifique lorsque le moteur est initialisé.

ps. : Alors pourquoi ces deux API Zend sont-elles des pointeurs de fonction ?

Lorsque le moteur est initialisé, zend_execute et zend_compile_file pointeront vers la méthode par défaut lors de l'initialisation du moteur. Nous pouvons remplacer les pointeurs de fonction lors de la compilation et de l’exécution, nous laissant ainsi des points d’ancrage pour étendre le moteur. Par exemple : vld pointe zend_execute et zend_compile_file vers sa propre fonction qui encapsule la fonction d'origine et ajoute la sortie des informations d'opcode.

Recommandations associées :

Explication détaillée du modèle de mémo des modèles de conception PHP

Explication détaillée de la façon dont PHP implémente le calcul des commissions par récursion

Explication détaillée de la façon dont PHP implémente un algorithme de hachage cohérent

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