この記事では主に、PHP カーネル探索のためのインタプリタの実行プロセスに関する関連情報を紹介します。必要な方は参考にしてください。お役に立てれば幸いです。
cli (コマンドラインインターフェイス) は PHP のコマンドラインモードです。PHP をサーバーにインストールすると、通常、このファイルが /usr/local/ に生成されます。 bin /php に移動すると、次のコマンドを使用して、SHELL で PHP スクリプトを実行できます:
/usr/local/bin/php -f test.php
CLI SAPI を例として、php 実行のコア部分を分析します。 CLI は php コマンド ライン モードです。この SAPI はデフォルトでインストールされます。PHP がサーバー側にインストールされると、シェルで PHP コマンドを呼び出すことで実行可能ファイルが生成されます。 executionプロセス:環境を導入して、環境を実行しますPHP スクリプトの実行:
php_execute_script(handle_file) を呼び出して 3 番目の段階を完了します。これにより、最終的に zend_execute_scipts(…) が呼び出されます。この関数は、複数の PHP スクリプトを一度に実行できる可変パラメーター関数です。
zend_execut_scripts(…..) 関数では、コアは (zend_compile_file)(compile_file)、(*zend_execute)(zend_op_array) という 2 つの関数を呼び出します zend_compile_file を呼び出して、パラメーターで指定された PHP スクリプト ファイルをコンパイルします。この関数は zend_op_array 構造体ポインターを返します。zend_execute に渡されるパラメーターは zend_compile_file の戻り値であり、opcode の実行が開始されます。
これら 2 つの関数は Zend API であり、エンジンの初期化時に特定のメソッドを返す関数ポインターです。
ps.: では、なぜこれら 2 つの Zend API は関数ポインターなのでしょうか?
エンジンが初期化されると、zend_execute と zend_compile_file はエンジンの初期化時のデフォルトのメソッドを指します。コンパイルおよび実行中に関数ポインタをオーバーライドして、エンジンを拡張するためのフックを残すことができます。例: vld は、zend_execute および zend_compile_file を、元の関数をカプセル化する独自の関数にポイントし、オペコード情報の出力を追加します。
関連する推奨事項:
PHPデザインパターンのメモパターンの詳細な説明
PHPが再帰によるコミッション計算を実装する方法の詳細な説明
PHPの実装方法の詳細な説明一貫したハッシュアルゴリズム
以上がPHPカーネルインタープリタの実行の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。