を確認して、次の PHP 動作メカニズムのプロセスを見てみましょう。
1. PHP 関連のプロセスは、Apache の起動とともに実行されます。 mod_php5.so モジュール (具体的には、SAPI、サーバー アプリケーション プログラミング インターフェイス) を介して Apache に接続されます。
3. PHP には、カーネル、Zend エンジン、および拡張レイヤーの合計 3 つのモジュールがあります。
4.リクエスト、ファイル ストリーム、エラー処理、その他の関連操作
5. Zend Engine (ZE) は、ソース ファイルをマシン言語に変換し、仮想マシン上で実行するために使用されます。関数、ライブラリ、およびストリームは、PHP によって特定の操作を実行するために使用されます。たとえば、MySQL データベースに接続するには mysql 拡張機能が必要です。
7. ZE がプログラムを実行するとき、ZE は制御を拡張機能に渡し、その後それを返します。特定のタスクを処理します。
8. 最後に、ZE はプログラムの実行結果を PHP カーネルに返し、PHP カーネルはその結果を SAPI 層に送信し、最終的にブラウザに出力します。
PHP の動作メカニズムを詳しく調べてみましょうちょっと待って、それはそれほど単純ではありません。上記のプロセスは単なる簡略化されたバージョンです。舞台裏で他に何が起こっているのかをもう少し詳しく見てみましょう。 Apache が起動すると、PHP インタープリターも起動します。
PHP の起動プロセスには 2 つのステップがあります。
最初のステップは、SAPI ライフサイクル全体にわたって有効になります。ステップは、現在のリクエストに対してのみいくつかの変数設定を生成することです。
PHP の動作メカニズム - PHP 起動の最初のステップ
最初のステップと 2 番目のステップが何かわからないですか?心配しないでください。これについては次に詳しく説明します。
最初の最も重要なステップを見てみましょう。覚えておくべきことは、操作の最初のステップはリクエストが到着する前に行われるということです。 Apache の起動後、PHP インタープリタも起動し、PHP は各拡張機能の MINIT メソッドを呼び出し、これらの拡張機能を使用可能な状態に切り替えます。 php.ini ファイルでどのような拡張子が開かれているかを確認してください。MINIT は「モジュールの初期化」を意味します。各モジュールは、他のリクエストを処理するための一連の関数、クラス ライブラリなどを定義します。 典型的な MINIT メソッドは次のとおりです:
PHP_MINIT_FUNCTION(extension_name){ /* 関数、クラスなどを初期化します */ }
PHP 動作メカニズムの PHP 起動の 2 番目のステップページリクエストが発生すると、 SAPI 層 PHP 層に制御を与えます。したがって、PHP は、このリクエストに応答するために必要な環境変数を設定します。同時に、実行中に生成された変数名と値を保存する変数テーブルも作成します。 PHP は各モジュールの RINIT メソッド、つまり「リクエストの初期化」を呼び出します。典型的な例はセッション モジュールの RINIT です。セッション モジュールが php.ini で有効になっている場合、$_SESSION 変数は初期化され、モジュールの RINIT メソッドが呼び出されたときに関連するコンテンツが読み込まれます。準備プロセスはプログラムの実行の間に自動的に開始されます。
典型的な RINIT メソッドは次のとおりです: PHP_RINIT_FUNCTION(extension_name) { /* セッション変数の初期化、変数の事前設定、グローバル変数の再定義など */ }
PHP 動作メカニズムの PHP シャットダウンの最初のステップ
PHP の起動と同じように、PHP のシャットダウンも 2 つのステップに分かれています。ページが実行されると (ファイルの最後に到達するか、exit または die 関数で終了するかに関係なく)、PHP はクリーンアップ プログラムを開始します。各モジュールの RSHUTDOWN メソッドを順番に呼び出します。 RSHUTDOWN は、プログラムの実行中に生成されたシンボル テーブルをクリアする、つまり各変数の unset 関数を呼び出すために使用されます。
典型的な RSHUTDOWN メソッドは次のとおりです: PHP_RSHUTDOWN_FUNCTION(extension_name) { /* メモリ管理を行い、最後の PHP 呼び出しで使用されたすべての変数の設定を解除します。など */ }
PHP 動作メカニズムの PHP シャットダウンの 2 番目のステップ
最後に、すべてのリクエストが処理され、SAPI を閉じる準備が整い、PHP は 2 番目のステップの実行を開始します。PHP は各拡張機能の MSHUTDOWN メソッドを呼び出します。これは、各モジュールがメモリを解放する最後の機会です。
典型的な RSHUTDOWN メソッドは次のとおりです: PHP_MSHUTDOWN_FUNCTION(extension_name) { /* ハンドラーや永続メモリなどの解放 */ }
このようにして、PHP のライフサイクル全体が終了します。 「開始ステップ 1」と「終了ステップ 2」は、サーバーからの要求がない場合にのみ実行されることに注意してください。
http://www.bkjia.com/PHPjc/445939.html
true