2012年9月10日月曜日

PHP Caching to speed up




PHPとSQLサーバーを利用したWebアプリケーションには、最も考慮する部分は、クエリステートメントのでしょう。接続者とSpeed​​関係で、ハードウェア的な限界の中にソフトウェアの処理が言えます。

一般的に大規模なトラフィックが発生する場合は、ページからダイレクトにクエリ文を使用してデータを抽出しません。グラフィック的に説明したいのです、グラフィックツールがない関係で簡単に描写してみると、

WebClient ---> WebServer ---> SQLServer(下)
WebClient <---- WebServer Return <--- SQLServer Return

上記のように、Webserverでphpパーサと同様のコードを解釈した後SQLServerにデータを要求して、並べ替えて、html形式でWebクライアントに応答します。
実装目的に応じて異なりだろうが、掲示板のようにリアルタイムで出力してくれるという形には適さ日数でしょう。

これに、以下のように動的に処理を終えたファイルをcache保存します。
5分間は接続者が何人かであろうと、SQLにデータを問わずphpと協力して解析をしなくても、Webサーバーは、単にキャッシュされたファイルを読み込み、出力してくれればいいでしょう。
サーバーの負荷と速度は当然速くなることです。

簡単に言えば、ファイルに保存しておき5分に一度更新してくれるでしょう。
1分接続者が1千人がうとすれば5千のイベントが1回でくれるんでしょうね。
(?
   $ reqfilename = "index";
   $ cachefile = "cache /"、$ reqfilename。 "。xanadu";
   $ cachetime = 5 * 60; / / 5 minutes
   / / Serve from the cache if it is younger than $ cachetime
   if(file_exists($ cachefile)&&(time() - $ cachetime <filemtime($ cachefile))){
     include($ cachefile);
     echo "<! - Cached"。date( 'jS FYH:i'、filemtime($ cachefile))。 " - > \ n";
     exit;
   }

   / / start the output buffer
   ob_start();
?)


Here is Page-Content home

(?
   $ fp = fopen($ cachefile、 'w'); / / open the cache file for writing
   fwrite($ fp、ob_get_contents()); / / save the contents of output buffer to the file
   fclose($ fp); / / close the file

   / / Send the output to the browser
   ob_end_flush();
?)

0 件のコメント:

コメントを投稿