WordPress显示数据库查询次数和查询花费时间

沃森博客 2017年10月1日12:39:05WordPress评论192阅读模式

WordPress提供了一些功能函数可以轻松地显示数据库查询的统计信息,这些信息可以公开地显示在网页中,或者隐藏在源代码中,更或者只有你自己可以看到。效果如下:

WordPress显示数据库查询次数和查询花费时间

WordPress主要提供了两个统计函数

1、网页加载时查询数据库的次数:?<?php echo get_num_queries(); ?>

2、服务器端完成这些查询所花费的时间:?<?php timer_stop(1); ?>

可以使用3种方式在网页中显示:

1. 公开地显示查询的统计信息

如果你觉的你的服务器或空间的处理速度好,或者想让你的访问者看到这些查询统计信息的话,你可以将这些统计信息公开显示在页面中:(本博就是把下方代码加在footer.php中,效果看上图

  1. <p?style="text-align:center;color:#3A90F2">查询次数<?php?echo?get_num_queries();?>?次,总耗时?<?php?timer_stop(1);??>?秒.</p>

2. 将统计信息显示在源代码中,而不出现页面的内容中

如果你不想将统计信息显示在页面上供访问者查看,但又想自己可以知道这些统计信息,那么你可以通过html的注释将结果只显示在源代码中(PS:大家也可以从源代码中查看的哦!):

  1. <!--?查询次数<?php?echo?get_num_queries();??>次,?耗时?<??php?timer_stop(1);??>?秒?-->

3. 统计信息只有你自己登录了后可以看到

该方法是第二种显示的优化方法,只需博客管理员登录后就可以查看查询统计信息,访问者是无法查看的:

  1. <?php
  2. if?(current_user_can('level_10'))
  3. {
  4. ????echo?'查询次数<!--?'?.?get_num_queries()?.?'?次,耗时?'?.?timer_stop(1)?.?'?秒?-->';
  5. }
  6. ?>

延伸拓展

如果想查看具体查询了数据库哪些内容,可以用如下解决方法:

1、首先在 wp-config.php 里添加如下代码

  1. define('SAVEQUERIES',?true);

2、在 footer.php 里添加如下代码:

  1. <?php
  2. if?(is_user_logged_in())
  3. {
  4. ????global?$wpdb;
  5. ????echo?"<pre>";
  6. ????print_r($wpdb->queries);
  7. ????echo?"</pre>";
  8. }
  9. ?>

 

代码解读:

  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); 输出各次数据库查询的信息。

刷新首页或日志页,可看到类似如下的输出结果:

  1. Array
  2. ???(
  3. ???????[0]?=>?Array
  4. ???????????(
  5. ???????????????[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
  6. ???????????????[1]?=>?0.0003960132598877
  7. ???????????????[2]?=>?require,?wp,?WP->main,?WP->query_posts,?WP_Query->query,?WP_Query->get_posts
  8. ???????????)
  9. ???????[1]?=>?Array
  10. ???????????(
  11. ???????????????[0]?=>?SELECT?option_value?FROM?wp_options?WHERE?option_name?=?'nuodou_header_code'?LIMIT?1
  12. ???????????????[1]?=>?0.0013589859008789
  13. ???????????????[2]?=>?require,?require_once,?include,?get_header,?locate_template,?load_template,?require_once,?get_option
  14. ???????????)

最后的活儿就得自己分析了,看看哪些是可以删除,哪些是可以改进的,以减少数据库查询次数。

沃森博客
  • 本文由 发表于 2017年10月1日12:39:05
  • 本文来自互利网收集整理,问题反馈联系邮箱:wosnnet@foxmail.com,转载请务必保留本文链接:https://wosn.net/642.html

发表评论