PHP コアのライフサイクル

WBOY
WBOYオリジナル
2016-06-13 13:17:03807ブラウズ

PHP コア --- ライフサイクル

PHP コア

PHP コアは 2 つの別々の部分で構成されており、下の部分は Zend Engine であり、人間が読めるスクリプトを解析して機械が読めるトークンに変換します。 a これらのトークンを処理空間で実行するために、ZE はメモリ管理、変数スコープ、およびディスパッチ関数呼び出しも処理します。

もう 1 つの層は PHP コア (php コア) で、SAPI 層の接続とバインドを担当します。これは通常、サーバー アプリケーション プログラミング インターフェイスを指します。また、fopen() fread() を使用してファイルとネットワーク I/O を接続するストリーム層など、safe_mode および open_basedir チェック用の統合制御層も提供します。 fwriter() メソッド。


ライフサイクル


特定のホスト環境で SAPI が開始されると、たとえば /usr/local/apache/bin/apachectl が開始されると、php は最初にそれを初期化します。コア サブシステム (サブシステム)、次に、このスタートアップ プログラムの最後で、PHP は各拡張機能 (Extension) のコードをロードし、そのモジュール初期化ルーティング (MINIT) を呼び出します。これにより、各拡張機能が内部変数を初期化する機会が得られます。 、リソースの割り当て、リソース ハンドルの登録、およびそれらの関数の ZE への登録が行われるため、スクリプトがこれらの関数のいずれかを呼び出したときに、ZE はどのコードを実行するかを認識します。

? 次に、PHP は、SAPI レイヤーが実行を要求するページを待機します。これは、CGI または CLI SAPI 環境では 1 回だけ実行されます。 Apache、IIS、またはその他の成熟した Web サーバーの SAPI では、リモート ユーザーが要求した場合にのみ発生するか、何度でも繰り返すことができ、両方を同時に実行することもできます。

リクエストがどのように到着したかに関係なく、PHP は ZE にスクリプトを実行するための環境を設定するように依頼し、各拡張機能のリクエスト初期化関数 () 🎜> Request Initialization?() function)、?RINITRINIT は、各拡張機能に特別な環境変数を作成し、それらを次のように割り当てる機会を与えます。リクエストリソースによって指定されたタスクを実行し、監査などの他のタスクを実行します。たとえば、セッション拡張など、php.ini ファイルでパラメータ session.auto_start が 1 (デフォルトは 0) に設定されている場合、レベルの説明 allowsセッションを自動的に開始すると、RINIT がユーザー空間で session_start() 関数を自動的にトリガーし、$_SESSION 変数を事前設定します。

? リクエストが初期化されると、ZE は PHP スクリプトをトークンに変換し、最終的に実行可能なオペコード (

オペコード) になります。コード内で関数が呼び出されると、ZE はパラメーターを関数に渡し、関数が実行されるまで一時的に制御を渡します。

? スクリプトが実行されると、php は各拡張機能のリクエスト シャットダウン関数 (

Request Shutdown() 関数) を呼び出します。最終クリーンアップを実行します。セッション変数をディスクに保存するなどの操作。 ? その後、ZE はクリーンアップ プロセスを実行します。これはガベージ コレクション (ガベージ コレクション) として知られています。?ガベージ コレクション RSHUTDOWN は、前のリクエストの各変数の設定解除を効果的に実行できます。 ) メソッドで変数を解放します。

? これが完了すると、php は SAPI からの次のリクエストを待機するか、CGI および CLI SAPI に次のリクエストがない場合は、SAPI はすぐにシャットダウンを実行します。操作します。シャットダウンの実行中、?php は各拡張機能をループし、その ?Module Shutdown?(MSHUTDOWN) 関数を呼び出します。これは、前の モジュール初期化ルーティング と同じです。対応しています。すべての拡張機能を終了した後、PHP は最終的に独自のコア サブシステムをシャットダウンします。


? 上記のことから、リクエストのプロセスでは、ZE と PHP CORE がそれぞれ独自の役割を実行し、?php コアがリクエストの受信と処理を担当していることがわかります。リクエストを受け取り、ZE は php スクリプトの実行を担当します。

?

?

?

?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。