PHP-Kernel-Untersuchung des Ausführungsprozesses des Interpreters

WBOY
Freigeben: 2016-07-29 09:09:36
Original
1091 Leute haben es durchsucht

cli (Befehlszeilenschnittstelle) ist der Befehlszeilenmodus von PHP. Nachdem wir PHP auf dem Server installiert haben, wird im Allgemeinen davon ausgegangen, dass diese Datei /usr/local ist / bin/php, dann können wir den folgenden Befehl verwenden, um ein PHP-Skript unter SHELL auszuführen:

Kopieren Sie den Code Der Code ist wie folgt:


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

Nehmen Sie CLI SAPI als Beispiel, um den Kernteil von PHP zu analysieren Ausführung. 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.

Code kopieren Der Code lautet wie folgt:


PHP -f XX.php

Ausführungsprozess:

Befehlszeilenparameter analysieren;

PHP-Code kompilieren und ausführen;

Umgebung bereinigen, beenden;

In der dritten Phase wird das PHP-Skript ausgeführt:

Schließen Sie die dritte Phase ab, indem Sie php_execute_script(handle_file) aufrufen. Welche Funktion wird schließlich zend_execute_scipts(...) aufgerufen? 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.

Das Obige stellt den Ausführungsprozess des Interpreters für die PHP-Kernel-Erkundung vor, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage