PHPが1ページ生成したデータベース照会回数を取得する

4571 ワード

多くのブログソフトには、「今回のページを生成するのにxxミリ秒を費やし、xxデータベースのクエリーを行った」などの機能があります.では、この機能はどのように実現されているのか、考えてみましょう.
1.クラスのコンストラクション関数でグローバル変数を宣言
ページ生成を統計するグローバル変数$queriesを定義するデータベース問合せ回数.1 function   __construct() 2 { 3      parent::__construct(); 4      global   $queries ; 5 }
2.データベースクラスにカプセル化されたquery()を変更する
データベース・クラスに役立つでしょう.query()をカプセル化する方法を見つけます.たとえば、次のようにします.1 // SQL 2 public   function   query( $query ) 3 { 4      //echo $query.'<br />'; 5      ++ $GLOBALS [ 'queries' ]; 6      return   $this ->result = mysql_query( $query $this ->link); 7 }
では、Queryを実行するたびに、グローバル変数queriesが1ずつ増加します.
3.メソッドボディには、次のように書きます.1 public   function   content( $id   = 0) 2 { 3      $GLOBALS [ 'queries' ] = 0; 4      // something to do 5      echo   $GLOBALS [ 'queries' ]; 6 }
このように簡単にその機能を実現することができます.
4.PHPスクリプトの計算に伴う関数
前に書いたブログではPHP スクリプト実行の時間を計算する関数を紹介していますが、ここでもう一度貼りましょう.01 // 02 public   function   runtime( $mode   = 0) { 03      static   $t ; 04      if (! $mode ) { 05          $t   = microtime(); 06          return ; 07      } 08      $t1   = microtime(); 09      //list($m0,$s0) = split(" ",$t); 10      list( $m0 , $s0 ) =  explode ( " " , $t ); 11      //list($m1,$s1) = split(" ",$t1); 12      list( $m1 , $s1 ) =  explode ( " " , $t1 ); 13      return   sprintf( "%.3f ms" ,( $s1 + $m1 - $s0 - $m0 )*1000); 14 }
次のように使用します.1 public   function   content( $id   = 0) 2 { 3      $this   -> runtime(); 4      $GLOBALS [ 'queries' ] = 0; 5      // something to do 6      echo   $GLOBALS [ 'queries' ]; 7      echo   $this   -> runtime(1); 8 }