2011-08-19 7 views
0

젠드 데이터베이스 프로파일 러를 설정하고 개발 사이트에서 켭니다. DESCRIBE 쿼리를 제외한 모든 쿼리를 볼 수 있습니다.이 쿼리는 새 테이블 개체를 요청할 때마다 실행되어야합니다. 쿼리를 보려고 다음과 같이 사용하고 있습니다.젠드 프레임 워크 db 프로파일 러에서 설명을 볼 수 없습니다.

$db = Zend_Registry::get('db'); 
$profiler = new Zend_Db_Profiler(); 
$profiler->setEnabled(true); 
$db->setProfiler($profiler); 

$i = 1; 
$output = 'PROFILE FOR: '.$_SERVER['REQUEST_URI'] . "\n"; 

    foreach ($profiler->getQueryProfiles() as $query) { 
     $output .= "Query ".$i++.": ".$query->getQuery(). "\n"; 
    } 
    $output .= 'Average query length: ' . $totalTime/$queryCount . 
       ' seconds' . "\n"; 

    $output .= 'Queries per second: ' . $queryCount/$totalTime . "\n"; 
    $output .= 'Longest query length: ' . $longestTime . "\n"; 
    $output .= "Longest query: \n" . $longestQuery . "\n\n"; 

    file_put_contents('/tmp/zend_profiler.log', $output, FILE_APPEND); 
} 

왜 내가 설명 쿼리를 볼 수 없는지 잘 모르겠습니다. 다른 사람이이 문제에 부딪 혔습니까?

답변

0

아마도 데이터베이스 연결 (일반적으로 프로덕션 환경에서 매우 좋은) 인 메타 데이터 캐시를 활성화했을 것입니다. 이 경우 DESCRIBE 쿼리는 캐시가 만료 될 때까지 실행되지 않습니다.

부트 스트랩 후 응용 프로그램 어딘가에이 줄을 실행하여 확인

if (null != Zend_Db_Table_Abstract::getDefaultMetadataCache()) { 
    echo "Cache is active, describe queries not run"; 
} else { 
    echo "Cache is not active"; 
}