この記事は、PHP ライフサイクルの詳細な説明 (図) を提供します。一定の参考価値があります。必要な友人が参照できます。お役に立てれば幸いです。
最初のプロセスはモジュール初期化フェーズ (MINIT) であり、SAPI ライフ サイクル全体 (Apache の開始後のライフ サイクル全体や実行プロセス全体など) で発生します。コマンド ライン プログラムの)、このプロセスは 1 回だけ実行されます。 2 番目のプロセスは、リクエスト フェーズで発生するモジュール アクティベーション フェーズ (RINIT) です。たとえば、URL を通じてページがリクエストされた場合、各リクエストの前にモジュールのアクティベーションが実行されます (RINIT リクエストの開始)
リクエストが到着すると、PHP は、PHP の実行中に変数名と値の内容を保存するシンボル テーブルやシンボル テーブルなどの実行環境を作成するなど、スクリプトを実行するための基本的な環境を初期化します。現在のすべての関数、クラス、その他の情報が含まれます。次に、PHP はすべてのモジュールの RINIT 関数を呼び出します。この段階で、各モジュールはいくつかの関連操作も実行できます。
一般的に、スクリプトは最後まで実行されるか、exit( ) または die() 関数を使用すると、PHP はすべて最終段階に入ります。開始フェーズに対応して、終了フェーズも 2 つのステージに分かれており、1 つはリクエストの完了後にモジュールを非アクティブにする (RSHUTDOWN、RINIT に相当)、もう 1 つは SAPI ライフ サイクルの終了時にモジュールを閉じる ( Web サーバーが終了するか、コマンド ライン スクリプトが実行されて終了します) (MSHUTDOWN、MINIT に対応)
#単一プロセス SAPI ライフ サイクル
##開始 - リクエストの開始 - リクエストのクローズ - 終了多数のグローバル変数を初期化する
ファイル関連のコンテンツを処理した後、PHP は php_request_startup を呼び出してリクエストの初期化操作を実行します。リクエスト初期化操作では、図に示す各モジュールのリクエスト初期化関数の呼び出しに加えて、その他の多くの作業も行われます。主な内容は次のとおりです。 #PHP 上記の変数の一部に加えて、実行環境にはエラー処理、例外処理などもあり、これらはすべてここで初期化されます。 php.ini で設定された zend_extensions も調べられ、ここで activate 関数が呼び出されます。
SAPI のアクティブ化
ここでの環境の初期化とは、ユーザー空間で使用する必要があるいくつかの環境変数の初期化を指します。ここでの環境には、サーバー環境、リクエスト データ環境などが含まれます。実際に使用する変数は ## です。 #P#OST、# ##_得る、####################################### ####### #COOKIE、_サーバー、#E NV、 _ファイル。 モジュールリクエストの初期化実行DEACTIVATION PHP がリクエストを閉じるプロセスは、いくつかの終了操作のセットであり、このセットは php_request_shutdown 関数内に存在します。このコレクションには次のものが含まれます: register_shutdown_function() を通じて登録されたすべての関数を呼び出します。シャットダウン時に呼び出されるこれらの関数はユーザー空間に追加されました。簡単な例として、スクリプト エラーが発生したときに統合関数を呼び出して、ユーザーによりわかりやすいページを提供することができます。これは Web の 404 ページに似ています。 終了 いよいよ終了です。 フラッシュ Zend エンジンを閉じる
利用可能なすべての __destruct 関数を実行します。ここでのデストラクタには、オブジェクト プール内のすべてのオブジェクトのデストラクタ (EG (objects_store)) と EG の各要素のデストラクタ (symbol_table) が含まれます。
すべての出力をフラッシュします。
HTTP 応答ヘッダーを送信します。これも、文字列を出力するプロセスですが、この文字列は特定の仕様に準拠している可能性があります。
各モジュールのシャットダウン要求メソッドをトラバースし、モジュールのシャットダウン要求操作を実行します。これが、各拡張機能の RSHUTDOWN を呼び出す図に示されているものです。
グローバル変数テーブル (PG (http_globals)) の変数を破棄します。
zend_deactivate 関数を使用して、字句アナライザー、構文アナライザー、および中間コード実行プログラムをオフにします。
各拡張機能の RSHUTDOWN ポスト RSHUTDOWN 関数を呼び出します。ただし、基本的にはすべての拡張 post_deactivate_func 関数ポインタが NULL です。
SAPI を閉じ、sapi_deactivate を通じて SG (sapi_headers)、SG (request_info) などの内容を破棄します。
ストリームのラッパーを閉じ、ストリーム フィルターを閉じます。
Turnメモリ管理をオフにします。
最大実行時間をリセットします。
sapi_flush は最後のコンテンツをフラッシュします。sapi_module.flush を呼び出します。これは、CLI モードの fflush 関数に相当します。
zend_shutdown は、 Zend エンジン。
以上がphpライフサイクルの詳しい説明(図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。