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 ;
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!