1
有没有办法来过滤通过表名查询在zend db profiler?文档没有任何关系,但我不知道我能不能只依靠这份文件completely..if你知道一种方法,请大家指教..的PHP Zend分贝探查滤波器
有没有办法来过滤通过表名查询在zend db profiler?文档没有任何关系,但我不知道我能不能只依靠这份文件completely..if你知道一种方法,请大家指教..的PHP Zend分贝探查滤波器
目前不过滤基于剖析的方式表名,只能通过查询类型(INSERT,UPDATE等)或查询所用的时间。
下面是一些代码,你可以尝试,可以帮助你做你想做的不过,请注意,我没有测试过,但希望它可以让你开始。
基本上,它循环遍历每个查询,并使用preg_match查看查询是否与您的表相关,如果不是,则会取消查询信息并继续,如果是则更新某些统计信息。在foreach结尾处,$查询应该只是对要分析的表的查询。
<?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();
}
}
谢谢,我会试试这个和cofirm。 – geej
请点击这里:http://stackoverflow.com/questions/7502515/php-and-zend-db-profiler – geej