In diesem Artikel werden hauptsächlich relevante Informationen zum Ausführungsprozess des Interpreters für die PHP-Kernel-Erkundung vorgestellt. Ich hoffe, es hilft allen.
cli (Command Line Interface) ist der Befehlszeilenmodus von PHP. Nachdem wir PHP auf dem Server installiert haben, wird im Allgemeinen eine ausführbare Datei generiert. usr /local/bin/php, dann können wir den folgenden Befehl verwenden, um ein PHP-Skript unter SHELL auszuführen:
/usr/local/bin/php -f test.php
Nehmen Sie CLI SAPI als Beispiel, um den Kernteil der PHP-Ausführung zu analysieren. CLI ist der PHP-Befehlszeilenmodus. Nach der Installation von PHP auf der Serverseite wird eine ausführbare Datei generiert, die durch Aufrufen des PHP-Befehls in der Shell ausgeführt werden kann.
PHP -f XX.php
Ausführungsprozess:
Befehlszeilenparameter analysieren;
Umgebung initialisieren; Kompilieren Sie den PHP-Code und führen Sie ihn aus.
In der dritten Phase wird das PHP-Skript ausgeführt:
Schließen Sie die dritte Stufe ab, indem Sie php_execute_script(handle_file) aufrufen, das schließlich zend_execute_scipts(…) aufruft. Diese Funktion ist eine Funktion mit variablen Parametern, die mehrere PHP-Skripte gleichzeitig ausführen kann.
In der Funktion zend_execut_scripts(…..) ruft der Kern die beiden Funktionen (zend_compile_file)( compile_file), (*zend_execute)( zend_op_array) auf;
Kompilieren durch Aufruf von zend_compile_file Die durch den Parameter angegebene PHP-Skriptdatei. Diese Funktion gibt einen zend_op_array-Strukturzeiger zurück.
Diese beiden Funktionen sind die Zend-API, ein Funktionszeiger, der bei der Initialisierung der Engine eine bestimmte Methode zurückgibt.
ps.: Warum sind diese beiden Zend-APIs Funktionszeiger?
Wenn die Engine initialisiert wird, verweisen zend_execute und zend_compile_file auf die Standardmethode, wenn die Engine initialisiert wird. Wir können Funktionszeiger während der Kompilierung und Ausführung überschreiben und so Haken für die Erweiterung der Engine hinterlassen. Beispiel: vld verweist zend_execute und zend_compile_file auf seine eigene Funktion, die die ursprüngliche Funktion kapselt und die Ausgabe von Opcode-Informationen hinzufügt.
Verwandte Empfehlungen:Detaillierte Erläuterung des Memomusters von PHP-Entwurfsmustern
Detaillierte Erklärung, wie PHP die Provisionsberechnung durch Rekursion implementiert
Detaillierte Erklärung, wie PHP einen konsistenten Hashing-Algorithmus implementiert
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Ausführung des PHP-Kernel-Interpreters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!