cli (コマンドラインインターフェイス) は PHP のコマンドラインモードです。PHP をサーバーにインストールすると、通常、このファイルが /usr/local/bin に生成されます。 /php にアクセスし、次のコマンドを使用して SHELL で PHP スクリプトを実行します:
コードをコピーします コードは次のとおりです:
/usr/local/bin/php -f test。 php
CLI SAPI を例として、PHP 実行のコア部分を分析します。 CLI は php コマンド ライン モードです。この SAPI はデフォルトでインストールされます。PHP がサーバー側にインストールされると、シェルで PHP コマンドを呼び出すことで実行可能ファイルが生成されます。
コードをコピーします コードは次のとおりです:
PHP -f XX.php
実行プロセス:
コマンドラインパラメータを解析します。
環境を初期化します。
PHP コードをコンパイルして実行します。
環境をクリーンアップして終了します。
3 番目の段階では、PHP スクリプトを実行する方法:
php_execute_script(handle_file) を呼び出して、最終的に zend_execute_scipts を呼び出します。 (…), この関数は複数のPHPスクリプトを一度に実行できる可変パラメータ関数です。
zend_execut_scripts(…..) 関数では、コアは 2 つの関数 (zend_compile_file)(compile_file)、(*zend_execute)(zend_op_array) を呼び出します。
zend_compile_file コンパイル パラメーターで指定された php スクリプト ファイルを呼び出すことにより、これは関数は zend_op_array 構造体ポインターを返します。
zend_execute に渡されるパラメーターは zend_compile_file の戻り値であり、オペコードの実行が開始されます。
これら 2 つの関数は Zend API であり、エンジンの初期化時に特定のメソッドを返す関数ポインターです。
ps.: では、なぜこれら 2 つの Zend API は関数ポインターなのでしょうか?
エンジンが初期化されると、zend_execute と zend_compile_file はエンジンの初期化時のデフォルトのメソッドを指します。コンパイルおよび実行中に関数ポインタをオーバーライドして、エンジンを拡張するためのフックを残すことができます。例: vld は、zend_execute および zend_compile_file を、元の関数をカプセル化する独自の関数にポイントし、オペコード情報の出力を追加します。
上記では、PHP カーネル探索のためのインタプリタの実行プロセスを、関連する側面も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。