1
zend db profiler의 테이블 이름으로 쿼리를 필터링하는 방법이 있습니까? 설명서에는 아무 것도 없지만이 문서를 완전히 신뢰할 수 있는지 여부는 알 수 없습니다. 방법을 알고 있으면 조언하십시오 ..테이블 이름으로 PHP zend db 프로파일 러 필터
zend db profiler의 테이블 이름으로 쿼리를 필터링하는 방법이 있습니까? 설명서에는 아무 것도 없지만이 문서를 완전히 신뢰할 수 있는지 여부는 알 수 없습니다. 방법을 알고 있으면 조언하십시오 ..테이블 이름으로 PHP zend db 프로파일 러 필터
현재 프로파일 러를 필터링 할 수있는 방법이 없습니다. 테이블 이름, 쿼리 유형 (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();
}
}
감사합니다. 나는 이것을 시험해보고 동의 할 것입니다. – geej
여기를 확인하십시오. http://stackoverflow.com/questions/7502515/php-and-zend-db-profiler – geej