PHPが1ページ生成したデータベース照会回数を取得する
4571 ワード
多くのブログソフトには、「今回のページを生成するのにxxミリ秒を費やし、xxデータベースのクエリーを行った」などの機能があります.では、この機能はどのように実現されているのか、考えてみましょう.
1.クラスのコンストラクション関数でグローバル変数を宣言
ページ生成を統計するグローバル変数$queriesを定義するデータベース問合せ回数.
2.データベースクラスにカプセル化されたquery()を変更する
データベース・クラスに役立つでしょう.query()をカプセル化する方法を見つけます.たとえば、次のようにします.
では、Queryを実行するたびに、グローバル変数queriesが1ずつ増加します.
3.メソッドボディには、次のように書きます.
このように簡単にその機能を実現することができます.
4.PHPスクリプトの計算に伴う関数
前に書いたブログではPHP スクリプト実行の時間を計算する関数を紹介していますが、ここでもう一度貼りましょう.
次のように使用します.
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
}