php zend db分析器按表名筛选

php zend db分析器按表名筛选,php,zend-db-profiler,Php,Zend Db Profiler,是否有一种方法可以按中的表名筛选查询?文档中没有任何内容,但我不知道是否可以完全依赖此文档。如果您知道一种方法,请告知。目前没有一种方法可以根据表名,仅根据查询类型(插入、更新等)或查询的运行时间来筛选探查器 这里有一些你可以尝试的代码,可以帮助你做你想做的事情,注意,我还没有测试过它,但希望它能让你开始 基本上,它循环分析每个已分析的查询,并使用preg_match查看查询是否与表匹配,如果不匹配,则取消查询信息并继续,如果是,则更新一些统计信息。在foreach$querys的末尾,应该只有

是否有一种方法可以按中的表名筛选查询?文档中没有任何内容,但我不知道是否可以完全依赖此文档。如果您知道一种方法,请告知。

目前没有一种方法可以根据表名,仅根据查询类型(插入、更新等)或查询的运行时间来筛选探查器

这里有一些你可以尝试的代码,可以帮助你做你想做的事情,注意,我还没有测试过它,但希望它能让你开始

基本上,它循环分析每个已分析的查询,并使用preg_match查看查询是否与表匹配,如果不匹配,则取消查询信息并继续,如果是,则更新一些统计信息。在foreach$querys的末尾,应该只有对要分析的表的查询

    <?php
    $tableName = 'my_table';

    /** var $profiler Zend_Db_Profiler */
    $profiler  = $db->getProfiler();

    $queries   = $profiler->getQueryProfiles();

    $totalQueries   = 0;
    $totalTime      = 0;

    if ($queries !== false) {
        foreach ($queries as $index => $query) {
            $queryString = $query->getQuery();

            $t = preg_quote($tableName);

            if (!preg_match("/UPDATE .?$t.? /i", $queryString) ||
                !preg_match("/INSERT INTO .?$t.?/i", $queryString) ||
                !preg_match("/DELETE FROM .?$t.?/i", $queryString) ||
                !preg_match("/REPLACE .*?INTO .?$t.?/i", $queryString) ||
            ) {
                unset($queries[$index]);
                continue;
            }

            $totalQueries++;
            $totalTime += $query->getElapsedSecs();
        }
    }

目前没有一种方法可以根据表名过滤探查器,只能根据查询类型(插入、更新等)或查询的运行时间进行过滤

这里有一些你可以尝试的代码,可以帮助你做你想做的事情,注意,我还没有测试过它,但希望它能让你开始

基本上,它循环分析每个已分析的查询,并使用preg_match查看查询是否与表匹配,如果不匹配,则取消查询信息并继续,如果是,则更新一些统计信息。在foreach$querys的末尾,应该只有对要分析的表的查询

    <?php
    $tableName = 'my_table';

    /** var $profiler Zend_Db_Profiler */
    $profiler  = $db->getProfiler();

    $queries   = $profiler->getQueryProfiles();

    $totalQueries   = 0;
    $totalTime      = 0;

    if ($queries !== false) {
        foreach ($queries as $index => $query) {
            $queryString = $query->getQuery();

            $t = preg_quote($tableName);

            if (!preg_match("/UPDATE .?$t.? /i", $queryString) ||
                !preg_match("/INSERT INTO .?$t.?/i", $queryString) ||
                !preg_match("/DELETE FROM .?$t.?/i", $queryString) ||
                !preg_match("/REPLACE .*?INTO .?$t.?/i", $queryString) ||
            ) {
                unset($queries[$index]);
                continue;
            }

            $totalQueries++;
            $totalTime += $query->getElapsedSecs();
        }
    }
请检查这里:请检查这里: