WordPressをチューニング SQL表示プラグイン

唐突ですが、Wordpressって重いですよね。機能はしっかりしてるし、拡張性もあるんだけど、性能だけはあまり評判がよくありません。こういうWebアプリで、性能が悪くなる原因はたいていDBアクセスにあります。ということで、どんなクエリを実行したか一目で確認できるプラグインを作ってみました。このプラグインを組み込めば、WordPressの実行に対する理解が進み、性能改善のヒントになると思います。

ダウンロード: db_logger

このプラグインを組み込んだあと、GETで db_logger=true を渡すと、WordPressの末尾にDBの実行履歴が表示されます。その後は、db_logger=falseを渡すまでデバックモードを継続します。このブログであれば http://blog.elearning.co.jp/?db_logger=true にアクセスすると、ログの表示が始まり、 http://blog.elearning.co.jp/?db_logger=false にアクセスするとログの表示がとまります。

※SQLの実行履歴を公開すると、セキュリティーホールを発見しやすくなってしまうので、”db_logger”の部分は変更できるようにしてあります。($logkey = ‘db_logger’; の部分を書き換える)。公開サーバに組み込む場合は必ずこの値を変更するようにしてください。

<?
/*
Plugin Name: DB Logger
Plugin URI: http://php7.jp
Description:
Version: -1
Author: よういちろう
Author URI: http://php7.jp
*/
$logkey = ‘db_logger’;
function db_logger($query){
$GLOBALS[‘query’][] = $query;
return $query;
}
function show_db_log(){
echo ‘<table border=1 bgcolor=white>’;
foreach($GLOBALS[‘query’] as $query)echo ‘<tr><td align=left>’.$query.'</td></tr>’;
echo ‘</table>’;
}
if(isset($_GET[$logkey])){
if($_GET[$logkey] == ‘true’){
$_SESSION[$logkey] = true;
}else{
unset($_SESSION[$logkey]);
}
}
if(isset($_SESSION[$logkey])){
add_filter (‘query’, ‘db_logger’);
add_action (‘shutdown’, ‘show_db_log’);
}

Facebookページもよろしくお願いします

CATEGORIES WordPressby.yasu.tanaka11 Comments2009.11.11
TAGS ,  
記事の投稿者
田中 康英
eラーニング支援部です。ときにメールマガジンを書き、ときにブログを書き、ときにソフトを翻訳し、ときに問い合わせに返信し、ときにUstreamスタジオの準備をし、とそんな感じでお仕事しています。

Facebook comments:

コメントをどうぞ

Eメールアドレスは公開されません。

Trackback URL

管理者の承認後に表示します。無関係な内容や、リンクだけで意見や感想のないものは承認しません。