WordPress提供了一些功能函數可以輕松地顯示數據庫查詢的統計信息,這些信息可以公開地顯示在網頁中,或者隱藏在源代碼中,更或者只有你自己可以看到。
WordPress主要提供了兩個統計函數:
1.網頁加載時查詢數據庫的次數: <?php echo get_num_queries(); ?>
2.服務器端完成這些查詢所花費的時間: <?php timer_stop(7); ?>
可以使用3種方式在網頁中顯示:
1. 公開地顯示查詢的統計信息:
如果你覺的你的服務器或空間的處理速度好,或者想讓你的訪問者看到這些查詢統計信息的話,你可以將這些統計信息公開顯示在頁面中:(效果查看博客的頁面底部)
<p>< ?php echo get_num_queries(); ?> queries in < ?php timer_stop(3); ?> seconds</p>
2. 將統計信息顯示在源代碼中,而不出現頁面的內容中:
如果你不想將統計信息顯示在頁面上供訪問者查看,但又想自己可以知道這些統計信息,那么你可以通過html的注釋將結果只顯示在源代碼中(PS:大家也可以從源代碼中查看的哦!):
<!-- <?php echo get_num_queries(); ?> queries in < ?php timer_stop(3); ?> seconds -->
3. 統計信息只有你自己登錄了后可以看到:
該方法是第二種顯示的優化方法,只需博客管理員登錄后就可以查看查詢統計信息,訪問者是無法查看的:
<?php
if (current_user_can('level_10'))
{ echo '<!-- ' . get_num_queries() . ' queries in ' . timer_stop(3) . ' seconds -->'; }
?>
如果想查看具體查詢了數據庫哪些內容,可以用如下解決方法:
1、首先在 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 )
下面的活兒就得自己分析了,看看哪些是可以刪除,哪些是可以改進的,以減少數據庫查詢次數。
文章轉載自:https://yusi123.com/2979.html
