Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Ausführung des PHP-Kernel-Interpreters

Detaillierte Erläuterung der Ausführung des PHP-Kernel-Interpreters

*文
*文Original
2018-01-05 14:13:481834Durchsuche

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.

Der an zend_execute übergebene Parameter ist der Rückgabewert von zend_compile_file, und der Opcode beginnt mit der Ausführung.


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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn