在zend框架db profiler中看不到描述描述

时间:2011-08-19 16:07:44

标签: php zend-framework zend-db describe

我已在我的开发网站中设置并启用了zend数据库分析器。我可以看到除了DESCRIBE查询之外的所有查询,我知道每次请求新的表对象时它都应该运行。我正在使用这样的东西来查看查询:

$db = Zend_Registry::get('db');
$profiler = new Zend_Db_Profiler();
$profiler->setEnabled(true);
$db->setProfiler($profiler);

$i = 1;
$output = 'PROFILE FOR: '.$_SERVER['REQUEST_URI'] . "\n";

    foreach ($profiler->getQueryProfiles() as $query) {
        $output .= "Query ".$i++.": ".$query->getQuery(). "\n";
    }
    $output .= 'Average query length: ' . $totalTime / $queryCount .
                ' seconds' . "\n";

    $output .= 'Queries per second: ' . $queryCount / $totalTime . "\n";
    $output .= 'Longest query length: ' . $longestTime . "\n";
    $output .= "Longest query: \n" . $longestQuery . "\n\n";

    file_put_contents('/tmp/zend_profiler.log', $output, FILE_APPEND);
}

不确定为什么我看不到描述查询。还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:0)

也许你已经为你的数据库连接激活了元数据缓存(这通常是一件非常好的事情,特别是在生产中)。在这种情况下,在缓存过期之前不会执行DESCRIBE查询。

通过在引导程序

之后在应用程序中的某处执行此行来验证它
if (null != Zend_Db_Table_Abstract::getDefaultMetadataCache()) {
  echo "Cache is active, describe queries not run";
} else {
  echo "Cache is not active";
}