4

次の CGI スクリプトを開発し、Apache 2 ( http://localhost/test.chtml ) で実行しました。PHP( http://localhost/verifica.php )で同じスクリプトを実行しました。その後、Apache Benchmark ツールを使用して Apache ベンチマークを実行しました。結果は画像で表示されます。

含む

#include <stdlib.h>
int main(void)
{

    printf("%s%c%c\n",
    "Content-Type:text/html;charset=iso-8859-1",13,10);
    printf("<TITLE>Multiplication results</TITLE>\n");
    printf("<H3>Multiplication results</H3>\n");

    return 0;
}

ここに画像の説明を入力

PHP が CGI スクリプトよりも多くのリクエストを処理する理由を誰かが説明してくれますか?

4

2 に答える 2

5

スタンドアロン CGI プログラムを呼び出すとfork/が返されますexec- 新しいプログラムを完全にロードする必要があります。これはあまり効率的ではありません。

当初、PHP はこの方法で実行されていましたが、高速化のためmod_phpに開発されたもので、最終的に PHP インタープリターが組み込まれ、Apache サーバーのプロセス空間内で実行され、必要なのは簡単な解析だけでした。

于 2012-06-10T22:36:14.147 に答える
2

ここで実際に測定しているのは、ほとんど操作のないプログラムによって発生するオーバーヘッドだけです。スクリプトまたは cgi を呼び出すことによって発生するオーバーヘッドは、Apache サーバーの構成方法によって異なります。php をモジュールとして使用している可能性があります。つまり、実際には apache プロセス内で実行されます。CGI の場合、通常のフレーバーを使用している可能性があります。つまり、呼び出しごとにプロセスが作成されます。

実際に何をテスト/認識/評価したいかによって、おそらくこのテストを何度も再実行する必要があります。また、PHP コードの実行に対する APC などのコード キャッシュの影響を確認することも忘れないでください。場合によっては、違いが劇的です。

于 2012-06-10T22:40:53.807 に答える