You are here

Drupal专业开发指南 第21章 显示查询

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-09-03 14:26

打开页面http://example.com/?q=admin/settings/devel(如果你启用了开发区块的话,那么还可点击“Devel 设置”链接),选中“Collect query info”(收集查询信息) 和 “Display query log”(显示查询日志)旁的复选框。

    一旦你保存了这些设置,你将会看到,在每个页面的最底部,都有一列查询,这些查询就是为生成当前页面所用到的所有查询语句!此外,列表还会告诉你生成查询的函数,该查询所耗费的时间,以及查询的调用次数。
    你可以在许多方式中使用这一信息。例如,如果同一查询在单个页面中被调用了40次,那么你就需要检查一下,你的代码中是否存在一个坏的控制结构循环。如果确实如此的话,那么你可以考虑使用一个静态变量,在请求期间,来保存数据库查询结果。下面是一个例子,它给出了这个设计模式的大致样子(来自于modules/taxonomy/taxonomy.module):
 
function taxonomy_get_term($tid) {
    // Define a static variable to hold data during this page request.
    static $terms = array();
 
    // Look in the static variable and only hit the database if the data
    // for this term ID has not already been retrieved.
    if (!isset($terms[$tid])) {
        $terms[$tid] = db_fetch_object(db_query('SELECT * FROM {term_data} WHERE            tid = %d', $tid));
    }
 
    return $terms[$tid];
}
 
    我们创建了一个静态数组来保存结果集,这样,如果查询已被执行过了,那么我们就已经获得了该值,这样就可以直接将其返回,而不需要再次查询数据库了。
 

Drupal版本: