唐突ですが、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ページもよろしくお願いします
記事の投稿者
a.takeuchi a