ホームページ  >  記事  >  バックエンド開発  >  PHP のいくつかの動作モード - CSDN ブログ

PHP のいくつかの動作モード - CSDN ブログ

不言
不言オリジナル
2018-04-08 13:47:114131ブラウズ

workerman プログラムは php-cli モード、つまりコマンドライン モードで実行する必要があることを理解する必要があります。

PHP には現在、CGI、FastCGI、CLI、Web モジュール モードの 4 つの動作モードがあります。

CGI

正式名称は「Common Gateway Interface」で、クライアントが Web サーバー上で実行されるプログラムにデータを要求できるようにするための標準です。さらに、CGI はどの言語にも依存しないため、言語に標準の入力、出力、および環境変数がある限り、どの言語でも作成できます。 php、perl、tclなど。

CGIはユーザーリクエストごとにメンテナンス用のサブプロセスを開く必要があるため、数が多いとパフォーマンス上の問題が発生し、近年ではほとんど使用されていません。

FastCGI

CGI のアップグレード版である FastCGI は、有効化されている限り常に実行でき、毎回 php.ini を解析して再起動する必要はありません。 . すべての DLL 拡張機能をロードし、すべてのデータ構造を再初期化します。

PHP は管理に PHP-FPM (FastCGI Process Manager)、つまり PHP FastCGI Process Manager の正式名を使用します。

FastCGI の動作原理

  • Web サーバーの起動時に FastCGI プロセス マネージャーがロードされ、

  • FastCGI プロセス マネージャーは複数の CGI インタープリター プロセスを開始し、Web サーバーからの接続を待機します。

  • クライアントのリクエストが Web サーバーに到達すると、FastCGI プロセス マネージャーが CGI インタープリターを選択して接続します。 Web サーバーは、CGI 環境変数と標準入力を FastCGI サブプロセス php-cgi に送信します。

  • FastCGI サブプロセスは処理が完了すると、同じ接続から Web サーバーに標準出力とエラー情報を返します。 FastCGI 子プロセスが接続を閉じると、リクエストが処理されます。次に、FastCGI 子プロセスは、FastCGI プロセス マネージャーからの次の接続を待機して処理します。

  • 通常の CGI モードでは、これで終了となり、次回から最初からやり直す必要があります。しかし、FastCGI では、これらすべてがプロセスの開始時に 1 回だけ行われます。さらに、永続的なデータベース接続が機能するという利点もあります。

Cli

PHP-CLIとは、PHP Command Line Interfaceの略で、コマンドライン上でPHPを実行するためのインターフェースであり、上で動作するPHP環境(PHP-CGIなど)とは異なります。ウェブサーバー。

Linux では、PHP がインストールした拡張機能を確認するために「php -m」をよく使用します。これは、PHP コマンドライン実行モードです。 php -h と入力すると、具体的なコマンドが何であるかを確認できます。

php-cli モードでは、workerman と同じように、php ファイルを直接起動して実行できます

php index.php start

php-cli モードでは、php 実行タイムアウトがないことに注意してください。このように、共通の本質は LoadModule を使用して phpX_module をロードすること、つまり php を Apache のサブモジュールとして実行することです。 Web 経由で php ファイルにアクセスする場合、Apache は phpX_module を呼び出して php コードを解析します。では、phpX_module はどのようにして php パーサーにデータを渡し、php コードを解析するのでしょうか。答えはサピを通じてです。

ということで、Apacheがphpを呼び出す上記の処理は以下の通りです:

apache -> httpd -> php5_module -> sapi -> php

apacheはリクエストを受信するたびに、sapi経由でリクエストを完了するためにphpに接続する処理を生成します。同時ユーザー数が多すぎると、サーバーが耐えられなくなります。

また、mod_phpをApacheにコンパイルすると、問題が発生した際にphpの問題なのかApacheの問題なのかを判断することが困難になります。

まとめ

高性能の PHP WEB サーバーを構築したい場合、現時点での最良の方法は、Apache/Nginx + FastCGI + PHP-FPM (+PHP-CGI) です。もうモジュールの読み込みや CGI は使用しないでください。関連する推奨事項:

4 つの PHP 動作モードの詳細な説明

5 つの主要な PHP 動作モード

以上がPHP のいくつかの動作モード - CSDN ブログの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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