2009-04-13 16 views
4

phpバッファリングの仕組みについて少し混乱しています。ApacheとMySQLでのPHP出力バッファリングのパフォーマンスへの影響

PHPページfoo.phpoutput_buffering = 4096php.iniにあり、Apacheがfoo.phpの取得リクエストを受け取ったとします。 foo.phpが実行を開始し、4096バイトが準備ができたらすぐにApacheに送信されます。 Apacheは4096バイトをクライアントに送信し始めます。

ここで私は理解できないことがあります。ブラウザに送信された厄介なトラッカーコールアウト、JavaScript、画像があるとどうなりますか?ブラウザがハングアップして、しばらくの間Apacheに戻ってきて、それを保持していません。 ApacheはMySQLスレッドをリリースしていません。これは "スリープ"として表示されています。これは正しいのですか、私は完全にここから離れていますか?

答えて

2

ブラウザは、サーバーからHTMLデータをダウンロードする際に「ハングアップ」しません。 JavaScriptファイルが実際に表示される前にJavaScriptファイルがダウンするのを待っていても、ページ全体をダウンロードし続けます。

もちろん、何らかの理由でブラウザ/サーバー接続が切断された場合、接続がタイムアウトするまで、ApacheがACKを待つことになりますが、これは通常の場合ではありません。

4

あなたはいくつかの厄介なトラッカーコールアウト、 javascriptやブラウザに送信された画像

があるときこれがない何が起こるかを完全にオフベース:)

ですサーバー側の何かに影響を与えます。

(キャッシュが1である場合を除く)PHPを通る各要求が

  1. はコードを選ぶために必要なPHPファイルをコンパイルします
  2. PHPのオプトコードを実行し、リターンの文字列結果PHP opt-codeをブラウザに送信

あなたが話しているバッファリングは、ステップ2と3の間に発生します。オプトコードがコンパイルされ

  • PHPのURLのための

    1. 要求がなされ
    2. PHPの実行が開始され、遅いロードimgタグを持つ文字列が作成され
    3. HTML文字列を返すために開始し
      • PHPは引き続きApacheに出力を提供します
      • 画像(またはJavaScriptコードなど)に対して別々のHTTP要求が行われます

    ここでは無効なリクエストです。 PHPとApacheが行っているすべての作業は、HTMLをブラウザに返すことです。このHTMLは、同じWebサーバーにコールバックするimgまたはjavasriptタグを生成することがありますが、これらの要求は、既存のページのHTMLを生成している要求とは別に処理されます。

  • 関連する問題