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