ホームページ  >  記事  >  バックエンド開発  >  phpの動作環境は何ですか?

phpの動作環境は何ですか?

王林
王林オリジナル
2019-10-10 17:51:543959ブラウズ

phpの動作環境は何ですか?

1. nginx swoole

swoole は、純粋な C 言語で書かれた非同期、並列、高性能ネットワーク通信エンジンであり、非同期マルチ-PHP言語のスレッドサーバー。 Swoole には http/websocket サーバーとクライアント、http2.0 サーバーが組み込まれており、Go 言語に似たコルーチンをサポートし、同期コードを使用してワンステップ手順を実装できます。

swoole は、I/O 多重化と非同期ブロッキングの Reactor モデルを採用し、マルチスレッド Reactor とマルチスレッド Worker を使用して非同期 I/O を実装します。 Reactor は Epoll に基づいており、各 Reactor は無数の接続リクエストを処理できるため、高い同時実行性を簡単に処理できます。

Nginx swoole モードでは、nginx はフロントエンド アクセス層フォワーダーとして機能し、swoole は同時実行性の高い Web サービスを構築するアプリケーション サーバーとして機能します。

2. nginx php-fpm

FastCGI は中立的な技術標準であり、php-fpm は PHP 言語の FastCGI プロセス マネージャーです。

CGI の fork-and-execute モードには多くの欠点があります。リクエストを受信するたびに、処理のためにプロセスをフォークする必要があり、応答を作成するために受信できるリクエストは 1 つだけです。PHP は php を再解析する必要があります。すべての Web リクエストの .ini ファイルで、すべての拡張機能をリロードし、すべてのデータ構造を初期化します。

FastCGI は事前に起動され、php.ini ファイルの解析、拡張機能の読み込み、データ構造の初期化は起動時にのみ完了します。CGI 管理サーバーとして存在し、プロセス/スレッド プールを使用して一連の事前開始 子プロセスが処理を待っています。その後、Web サーバーがリクエストを送信し、FastCGI がリクエストを受信すると、そのリクエストは子プロセスに渡されて処理されるため、リクエストを受信した後に CGI を起動する必要がなく、はるかに高速になります。 Web サーバーは、ソケット ロング接続を通じて FastCGI プロセス マネージャーを要求します。

FastCGI プロセスは常駐 CGI のようなものです。リクエストが到着すると、FastCGI プロセス マネージャーは PHP-CGI インタープリターを選択して接続し、Web サーバーから送信された環境変数と標準入力を受け取ります。リクエストの処理後is completed FastCGI プロセス マネージャーからの次の接続の処理を待機している PHP-CGI インタープリター サブプロセスと同じ接続から Web サーバーに標準出力またはエラーを返します。

3. apache mod_php

mod_php モードで php を実行すると、php が Apache のモジュールとして開始されることを意味します。 Apache の起動時のみ、php.ini 設定ファイルが読み込まれ、拡張モジュールがロードされます。Apache の実行中は、拡張モジュールの読み込みとロードは行われません。安定性とセキュリティ上の理由から、Apache は通常、デフォルトのプリフォーク モードを使用して PHP プログラムを実行します。プリフォーク モードでは、別の制御プロセスが子プロセスの生成を担当し、子プロセスはリクエストをリッスンして応答するために使用されます。

Apache は、クライアントがサービスを取得する前に子プロセスが生成されるのを待つ必要がないように、今後のリクエストに備えて、常にいくつかの予備またはアイドル状態の子プロセスを保持しようとします。ただし、接続数が増加すると、Apache はリクエストに応答するためにより多くのプロセスを生成する必要があり、CPU が頻繁にプロセスを切り替えるため、イベントとリソースが消費され、Apache のパフォーマンスが低下します。同時に、Apache は I/O を同期的にブロックします。この状況では、select はハンドルにイベント通知があるかどうかを確認するために複数の接続ハンドルを走査するため、効率は非常に低くなります。

推奨チュートリアル: PHP ビデオ チュートリアル

以上がphpの動作環境は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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