Open Source Web Development Tutorials - Dev Shed
タイマーを利用したPHPアプリのベンチマーク
(2009/01/22公開)
HTTP圧縮を使わないでデータベース行を表示
前ページで説明したとおり、最初のベンチマーク例は、サンプルの「USERS」MySQLデータベーステーブルから10行をフェッチするのに要する時間の測定が目的です。読み出した行は、ブラウザ上に表示します。この例では、データをクライアントへ返すときにHTTP圧縮を使わないで、すべてのタスクを実行します。
サンプルデータベーステーブルに以下のデータが投入されていることとします。
対応するコードサンプルおよび各時間測定結果は以下のとおりです。
// example without using HTTP compression
try{
// instantiate 'Timer' class
$timer=new Timer();
// start timer
$timer->start();
// connect to MySQL
$db=new MySQL(array
('host'=>'host','user'=>'user','password'=>'password','database'=>'database'));
$result=$db->query('SELECT * FROM users');
while($row=$result->fetchRow()){
echo 'ID: '.$row['id'].' Name: '.$row['name'].' Email: '.$row['email'].'<br />';
}
$elapsedTime=$timer->stop();
// display elapsed time
echo 'Time spent in fetching database rows was '.$elapsedTime.' seconds';
}
catch(Exception $e){
echo $e->getMessage();
exit();
}
/* displays the following:
ID: 1 Name: user1 Email: user1@domain.com
ID: 2 Name: user2 Email: user2@domain.com
ID: 3 Name: user3 Email: user3@domain.com
ID: 4 Name: user4 Email: user4@domain.com
ID: 5 Name: user5 Email: user5@domain.com
ID: 6 Name: user6 Email: user6@domain.com
ID: 7 Name: user7 Email: user7@domain.com
ID: 8 Name: user8 Email: user8@domain.com
ID: 9 Name: user9 Email: user9@domain.com
ID: 10 Name: user10 Email: user10@domain.com
Time spent in fetching database rows was 0.0053 seconds
/*
見てのとおり、上述したベンチマークスクリプトはとても理解しやすいですね。基本的に、サーバーへの接続を含めて、MySQLから行を読み出す時間を測定するだけの内容です。サンプルデータベーステーブルに対してトリビアルクエリーを実行するだけですから、当然ながらこのプロセスは非常に短時間で処理されます。しかし、この例では、HTTP圧縮を使わないでデータを表示するように設定しました。
ここまで来れば、すぐ前に定義した「タイマー」クラスの正確な利用方法が理解できたはずです。そこで、一歩先に進んでもう1つの似た例を設定しましょう。上記の例と似ていますが、今度はフェッチしたデータベース行をHTTP圧縮してクライアントに戻します。
さあ、次ページに進みましょう。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.









