ホームページ >バックエンド開発 >PHPチュートリアル >PHP ソース コードの学習 -- ライフ サイクル_PHP チュートリアル
私はphpを2年間使っていますが、表面だけは知っていますが、内部は理解していません。勉強中はその意味を理解していません。ここで重要な点に注意してください。
すべての始まり: SAPI インターフェース
SAPI (サーバー アプリケーション プログラミング インターフェイス) は、PHP の特定のアプリケーション プログラミング インターフェイスを指し、Web サーバー、コマンド ライン、または他のプログラムへの埋め込みなど、さまざまな方法で実行できます。 Web サーバーで PHP スクリプトをテストするか、コマンドラインでスクリプトを実行します。スクリプトの実行後、Web サーバーが応答し、ブラウザーが応答情報を表示するか、端末にコンテンツを表示します。1) モジュール初期化フェーズ (MINIT)、このプロセスは、sapi ライフサイクル全体 (Apache が開始された後のライフサイクル全体、またはコマンドライン プログラムの実行プロセス全体など) で 1 回だけ実行されます。
2) モジュールアクティブ化フェーズ (RINIT)、このプロセスはリクエストフェーズで発生します。たとえば、URL を通じてページがリクエストされた場合、モジュールのアクティブ化はリクエストの前に実行されます。たとえば、PHP によって登録された一部の拡張モジュールが呼び出されます。 MINIT フェーズのすべてのモジュールを戻します。モジュールはこの段階で、定数の登録、モジュールで使用されるクラスの定義などの初期化作業を実行します。
2. リクエスト処理: リクエストが到着すると、PHP は、PHP の実行中に変数名と値の内容を保存するシンボル テーブルやすべてのシンボルを含む実行環境の作成など、スクリプトを実行するための基本的な環境を初期化します。現在の関数、クラス、その他の情報を表示します。次に、PHP はすべてのモジュールの RINIT 関数を呼び出します。この段階で、各モジュールはいくつかの関連する操作も実行できます。
3. リクエストの終了: リクエストが処理された後、通常、スクリプトが最後まで実行され、exit() または die() 関数が呼び出されるとき、PHP は対応する終了ステージに入ります。スタートステージ、エンドステージも2つのリンクに分かれています
。1)モジュール(RSHUTDOWN、RINITに相当)を無効化します
2) sapiライフサイクルが終了したら(Webサーバーが終了するか完了後にコマンドラインが終了する)、モジュール(MSHUTDOWN、MINITに相当)を閉じます
単一プロセス SAPI ライフサイクル
コマンドラインモードの PHP は単一プロセス sapi モードに属し、処理プロセス全体には次のリンクのみが含まれます: 開始-要求開始-要求終了-終了。ライフサイクルが完了します。単一プロセスの Sapi ライフサイクルは図に示すとおりです:
マルチプロセス SAPI ライフサイクル
コマンドラインに加えて、Apache など、PHP リクエストを最もよく処理する別のタイプの Web サーバーがあります。Apache は、Web サーバーとして、Apache が起動された後、複数の自己プロセスをフォークします。プロセス、各プロセス メモリ空間は独立しており、各子プロセスは開始ステージと終了ステージを通過します。ただし、各子プロセスの開始はプロセスがフォークアウトした後にのみ発生し、プロセスの存続期間全体にわたって複数のリクエストが処理される可能性があります。サイクル。シャットダウン フェーズは、Apache がシャットダウンされるか、プロセスが終了した後にのみ開始され、これらの 2 つのフェーズの間で、各リクエストが処理され、リクエストは閉じられます。マルチプロセスsapiのライフサイクルは図のとおりです。
マルチスレッド SAPI ライフサイクル
マルチスレッド モードはマルチプロセス モードと似ていますが、異なる点は、リクエストの開始と終了のリンクがライフサイクル全体にわたって並行して繰り返されることです。
(転載の際は出典を明記してください:著者: jmol、Weibo: http://weibo.com/yospace Blog Park: http://www.cnblogs.com/yoainet/)
http://www.bkjia.com/PHPjc/741586.html