最近做一個wordpress的企業模板,關注了一下查詢次數這個東西!在 footer.php 里添加了如下代碼,以顯示wordpress查詢數據庫次數及查詢耗時:
- <?php?echo?get_num_queries()?.?‘?queries?in?‘?.?timer_stop(0)?.?‘?seconds.’;??>??
結果顯示首頁查詢30次,日志頁查詢達45次。。。真是郁悶,為了查看具體查詢了數據庫哪些內容,Google了一下,得到如下解決方法,這里總結出來:
首先在 wp-config.php 里添加如下代碼:
- define(‘SAVEQUERIES’,?true);??
然后在 footer.php 里添加如下代碼:
- <?php?if?(is_user_logged_in()){ ??
- ????global?$wpdb; ??
- ????echo?“<pre>”; ??
- ????print_r($wpdb->queries); ??
- ????echo?“</pre>”; ??
- }??>??
分析:
1、if (is_user_logged_in()) 用于判斷當前訪客是否已登錄,也可以用 if (current_user_can(‘level_10’)) 來判斷是否為管理員登錄,目的是為了不讓游客查看到這些數據,此代碼可省;
2、global $wpdb; 定義全局變量$wpdb,這是Wordpress默認的數據庫類;
3、<pre></pre>將結果嵌套在HTML標簽<pre>內;
4、print_r($wpdb->queries); 輸出各次數據庫查詢的信息。
刷新首頁或日志頁,可看到類似如下的輸出結果:
- Array
- (
- [0] => Array
- (
- [0] => SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = ‘post’ AND (wp_posts.post_status = ‘publish’ OR wp_posts.post_status = ‘private‘) ORDER BY wp_posts.post_date DESC LIMIT 0, 10
- [1] => 0.0003960132598877
- [2] => require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts
- )
-
- [1] => Array
- (
- [0] => SELECT option_value FROM wp_options WHERE option_name = ‘nuodou_header_code’ LIMIT 1
- [1] => 0.0013589859008789
- [2] => require, require_once, include, get_header, locate_template, load_template, require_once, get_option
- )
- ……
本文原地址:http://www.kuqin.com/zhanz/20111027/313921.html