WordPress顯示數據庫查詢次數和查詢花費時間


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM