0

我正在寻找一种方法来分析由 Zend_Table 内部执行的查询。
例如,在完成快速入门课程后,如何分析所有执行的查询?
我试图从 application.ini 启用探查器,如下所示:

resources.db.profiler.class   = "Zend_Db_Profiler_Firebug"
resources.db.profiler.enabled = true

并将下一行放在留言簿控制器中:

...
$db = Zend_Db_Table_Abstract::getDefaultAdapter();
$profiler = $db->getProfiler();

echo $profiler->getTotalElapsedSecs();

这给了我 0

我还尝试在 Bootstrap 文件中启用探查器,如下所示:

protected function _initProfiler() {
    $this->bootstrap("db");
    $profiler = new Zend_Db_Profiler_Firebug("All DB Queries");
    $profiler->setEnabled(true);
    Zend_Registry::get("db")->setProfiler($profiler);
}

Whick 没有给我任何结果(我已经安装并测试了 Firebug 和 FirePHP,使用 Zend_Log_Writer_Firebug())

我将不胜感激。谢谢 !

4

2 回答 2

2

我还没有尝试过 Firebug 分析器。但我确实使用 html 表在每个执行查询的页面底部输出分析器信息。

在 application.ini 中启用探查器

resources.db.params.profiler = true

在布局中呈现配置文件结果:

<?php
    $this->addScriptPath(APPLICATION_PATH . '/views/scripts');
    echo $this->render('profiler.phtml')
?>

profiler.phtml 要渲染的视图

<?php
// get the default db adapter
$adapter = Zend_Db_Table::getDefaultAdapter();
$profiler = $adapter->getProfiler();
if ($profiler->getEnabled() && $profiler->getTotalNumQueries() > 0) :
?>
    <div style='text-align:center'>
        <h2>Database Profiling Report</h2>
        <p>Total queries executed: <?php echo $profiler->getTotalNumQueries() ?></p>
        <p>Total elapsed time: <?php echo $profiler->getTotalElapsedSecs() ?></p>
    </div>
    <table class='spreadsheet' cellpadding='0' cellspacing='0' style='margin:10px auto'>
        <thead>
            <tr>
                <th>#</th>
                <th>Query</th>
                <th>Time</th>
            </tr>
        </thead>
        <tbody>
    <?php foreach ($profiler->getQueryProfiles() as $queryNumber => $query) : ?>
                <tr>
                    <td>(<?php echo $queryNumber + 1 ?>)</td>
                    <td><?php echo $query->getQuery(); ?></td>
                    <td><?php echo $query->getElapsedSecs(); ?></td>
                </tr>
    <?php endforeach ?>
        </tbody>
    </table>
    <?php endif ?>

我不认为使用萤火虫探查器要困难得多。

于 2012-10-10T06:48:39.733 回答
1

问题出在参数实例化中。当我进入

resources.db.params.profiler.class   = "Zend_Db_Profiler_Firebug"
resources.db.params.profiler.enabled = true

而不是以前的配置,一切都很好。注意参数行的 .params 部分

于 2012-10-22T16:12:30.650 回答