• Register

输出WordPress数据库查询的具体内容,减少数据库查询次数

最近做一个wordpress的企业模板,关注了一下查询次数这个东西!

在 footer.php 里添加了如下代码,以显示wordpress查询数据库次数及查询耗时:

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://yangjunwei.com/a/656.html
除非注明,杨俊伟博客文章均为原创,转载请注明出处和链接!
 

发表评论 

16 条评论 »

  • 若雁
    2016/01/04 at 01:39:39

    这个还不错,好文章,大家谈谈

  • 博客爪
    2011/11/04 at 20:31:51

    这问题还没怎么关注,不过今后关注了

    • 头像来自 新浪微博
      haibor
      2011/11/08 at 10:59:03

      @博客爪 一般都木问题,除了要求极高的博主,可以考虑处理一下

  • 高桥信息港
    2011/11/04 at 20:23:52

    看了你的博客,确实不错的博客,哥们,交个朋友吧,咱俩的爱好差不多。我的博客www.8090hack.com

  • 足浴
    2011/11/04 at 15:13:54

    又是复杂嘀东东啊。。

  • 信阳SEO
    2011/11/02 at 15:36:32

    WP太难折腾了

  • 阿修罗
    2011/10/30 at 10:58:50

    呵呵,原来博主都在啊,欢迎来我的博客走访走访。

  • 广州SEO
    2011/10/30 at 10:22:54

    来看老朋友,有阵子没来了。

    • 头像来自 新浪微博
      haibor
      2011/10/30 at 10:28:09

      @广州SEO 确实有段时间未来坐坐

  • Louis Han
    2011/10/29 at 10:14:23

    首页查询30次 还真是不少啊

    • 头像来自 新浪微博
      haibor
      2011/10/29 at 10:21:03

      @Louis Han 是啊,大概是后台插件有点多了,还有不少并未启用的!

  • 王宝臣
    2011/10/28 at 13:48:50

    你好,我是王宝臣,很高兴认识你.wp博客是全球最火热的开源博客之一.国内很多站长使用的就是wp博客,wp博客集成了很多方便的插件,安装方便,功能齐全,欢迎回访王宝臣博客

  • 免费在线看书
    2011/10/27 at 15:33:23

    减少对数据库的请求次数,可以缓解服务器压力。。

  • 集趣
    2011/10/27 at 15:33:14

    可是不会代码啊~

我还是想用邮箱注册

登录

忘记密码 ?

用第三方帐号快捷登录

已有账户?前往登录吧~

注册