RSS

태그 보관물: SAVEQUERIES

워드프레스 실행쿼리 보기

워드프레스의 최적화된 소스를 제대로 분석하기란 쉽지 않다. 오픈소스지만 코어 해킹은 하지 않는 관행으로 통상 콘텐츠(테마)만 수정하게된다. 그러나 코어 소스를 파악하지 않은 채 주변(테마) 소스를 수정하려고 하면 여러 궁금증과 함께 답답함이 몰려온다. 특히, 데이터 셋에 어떤 쿼리가 요청되어 메모리가 채워지는지 궁금할 것이다.

프로그램 디버깅을 해본 경험이 있다면 일일이 쿼리를 찍어 보는 일이 상당히 귀찮고 번거롭다는 걸 안다. 하지만 워드프레스에서는 환경설정 파일과 디스플레이용 파일에 몇 줄의 코드만 추가하면 된다.

워드프레스의 환경설정 파일인 wp-config.php을 열어서 다음 한 줄을 추가하자.

define(“SAVEQUERIES”, true);

이 옵션을 활성화하면 데이터베이스 쿼리를 모두 전역변수에 저장해 페이지에 표시해 준다. 워드프레스가 웹 페이지를 생성할 때 호출하는 모든 쿼리를 보여줌으로써 원활한 디버깅을 할 수 있다. 테마나 플러그인 작업을 하는 중에 문제가 생기면 이 옵션을 사용하면 데이터베이스 호출 내역을 정확하게 파악할 수 있다.

자, 다음으로 요청한 쿼리를 출력할 적당한 파일을 찾아서 열어보자. 모든 페이지에 포함되는 footer.php가 괜찮을 것 같다. 아래 코드를 추가하자.

if (current_user_can(‘install_plugins’)) {
global $wpdb;
print_r($wpdb->;queries);
}

웹 페이지를 열어 디버깅 결과를 확인해보자.

define("SAVEQUERIES", true);

[define(“SAVEQUERIES”, true); 설정]

이 코드는 모두에게 열려있지는 않다. 단지 사이트 관리자가 로그인한 경우에만 출력된다. 디버깅이 끝나면 설정을 비활성화 해주는 걸 잊어선 안 된다. 불필요한 데이터가 보이기도 하지만, 해커에게 중요한 정보가 노출될 수 있기 때문이다.

define(“SAVEQUERIES”, false); /* 쿼리 디버깅 비활성화 */

쿼리 이외에 좀 더 자세한 사항들을 디버깅하고 싶다면, 즉 중단점을 걸어 더 상세하게 들춰보고 싶다면 Xdebug를 이용해야 한다. 이전에 올린 이클립스디버깅을 참고하기 바란다.

 
 

태그: , , ,