この記事では、php-fpm の動作原理とモードについて簡単に紹介します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。
動作原理:
cgi 初期化フェーズ: fcgi_init() 関数と sapi_startup() 関数をそれぞれ呼び出し、プロセス信号を登録し、sapi_globals グローバル変数を初期化します。
php 環境初期化フェーズ: cgi_sapi_module.startup によってトリガーされます。実際には php_cgi_startup 関数が呼び出され、php_cgi_startup が内部で php_module_startup を呼び出して実行されます。 php_module_startup の主な機能: a). PHP 設定をロードして解析する; b). PHP モジュールをロードして関数シンボル テーブル (function_table) に記録する; c). zend 拡張機能をロードする; d). 無効な関数とクラス ライブラリ設定を設定する; e). メモリ回復メソッドを登録します;
php-fpm 初期化フェーズ: fpm_init() 関数を実行します。 php-fpm.conf ファイル構成の解析、プロセス関連パラメータ (プロセスが開くことができるファイルの最大数など) の取得、プロセス プールとイベント モデルの初期化、およびその他の操作を担当します。
php-fpm 実行フェーズ: fpm_run() 関数を実行すると、実行後にメイン プロセスがブロックされます。このフェーズは、フォーク子プロセスとループ イベントの 2 つの部分に分かれています。 fork の子プロセス部分は fpm_children_create_initial 関数によって処理されます (注: オンデマンド モードは fpm_pctl_on_socket_accept 関数で作成されます)。ループ イベント部分は fpm_event_loop 関数を通じて処理されます。この関数は内部の無限ループであり、イベントの収集を担当します。
実行モード
php-fpm は、静的、オンデマンド、動的という 3 つの実行モードをサポートしています。デフォルトは動的です。
static: 静的モード。起動時に固定ワーカー プロセスが割り当てられます。
ondemand: オンデマンドで割り当て、ユーザーリクエストを受信したときにワーカープロセスをフォークします。 ondemand: オンデマンドで割り当て、ユーザーリクエストを受信したときにワーカープロセスをフォークします。
dynamic: 動的モード。起動時に固定プロセスが割り当てられます。リクエスト数の増加に応じて、設定された変動範囲内でワーカー プロセスを調整します
以上がphp-fpm の動作原理とモードの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。