11

に PHP ページがあるとしますhttp://server/page.php

クライアントは、ブラウザからそのページのサーバーに同時に 100 のリクエストを送信します。

サーバーは 100 個の個別のプロセスをphp.exe同時に実行しますか?

page.php100回を再解釈しますか?

4

4 に答える 4

11

サーバーの設定によって、答えは大きく異なります。

最初に質問 1 に答えましょう。

サーバーは、php.exe の 100 個の個別のプロセスを同時に実行しますか?

これは、PHP のインストール方法によって異なります。PHP が CGI 経由で実行されている場合、答えは「はい、各リクエストは PHP の個別のインスタンスを呼び出します」です。Apache モジュールを介して実行されている場合、答えは「いいえ、各要求は Apache 実行可能ファイル内で新しい PHP スレッドを開始します」です。

他の Web サーバーにも同様のバリエーションがあります。Unix/Linux ベースのオペレーティング システムの場合、リクエストごとに実行可能ファイルのコピーを個別に実行しても、必ずしもパフォーマンスが低下するわけではありません。OS のコアは、多くの場合、1 つのモノリシックな実行可能ファイルよりも、複数の個別の実行可能ファイルを使用した方がタスクが適切に実行されるように設計されています。

ただし、何をしても、多数の同時リクエストがあると、サーバー リソースが枯渇し、ユーザーのタイムアウトやエラーが発生します。これが、PHP プログラムができるだけ早く実行を終了することが重要である理由です。実行が遅い Web 消費用の PHP プログラムを作成しないでください。大量のトラフィックが発生する可能性がある場合は、機能をテストするのと同じくらいパフォーマンスをテストする必要があります。プログラムを迅速に終了させると、多数の同時リクエストが発生する可能性が大幅に減少し、サイトのパフォーマンスに大きな影響を与えることは明らかです。

2 番目の質問:

page.php を 100 回再解釈しますか?

標準的な PHP インストールの場合、ここでの答えは「はい、パフォーマンスに影響があります」です。

ただし、PHP には、これを軽減するために特別に設計されたキャッシング ソリューションがいくつか用意されています。主なオプションは APC と Zend Cache で、どちらも標準モジュールとしてインストールできます。これらのモジュールを使用することは、PHP が解釈されたコードをキャッシュすることを意味するため、後続の呼び出しではるかに高速に実行できます。

Zend Cache は、次の PHP 5.5 リリースの標準 PHP インストールの一部として含まれます。

于 2013-06-01T16:08:33.000 に答える