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