programing

WordPress에서 페이지 요청에 대한 모든 데이터베이스 쿼리의 로그를 인쇄할 수 있습니까?

closeapi 2023. 3. 27. 21:15
반응형

WordPress에서 페이지 요청에 대한 모든 데이터베이스 쿼리의 로그를 인쇄할 수 있습니까?

WordPress 데이터베이스에서 커스텀 쿼리를 실행하는 플러그인을 만들고 각 게시물의 제목을 실제 게시물에 대한 링크로 나열한 결과를 루프합니다.

사용하고 있다get_permalink($id)각 투고의 URI를 취득할 수 있습니다만, 루프외에서 이 작업을 하고 있기 때문에, 각각의 요구가 다른 데이타베이스 쿼리를 작성하는 것이 아닌가 하는 의심이 듭니다.

함수 코드를 체크하고 실제 WordPress 코어 파일에서 무슨 일이 일어나고 있는지 알아보려고 했습니다만, 제가 정말로 관심을 가지고 있는 것은 일반적인 방법이기 때문에, 저는 항상 모든 플러그인에 가장 최적화된 코드를 쓸 수 있습니다.

이것을 달성하는 가장 좋은 방법을 알고 있는 사람이 있습니까?

wp-config에서.php 다음 행을 추가합니다.

define('SAVEQUERIES', true);

당신의 테마 기능.php 파일(또는 그 문제의 플러그인 파일)은 다음과 같이 사용할 수 있습니다.

add_action('shutdown', 'sql_logger');
function sql_logger() {
    global $wpdb;
    $log_file = fopen(ABSPATH.'/sql_log.txt', 'a');
    fwrite($log_file, "//////////////////////////////////////////\n\n" . date("F j, Y, g:i:s a")."\n");
    foreach($wpdb->queries as $q) {
        fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");
    }
    fclose($log_file);
}

확인하다ABSPATH.'/sql_log.txt'php에서 쓸 수 있습니다.

이게 도움이 됐으면 좋겠다.

@Poelinca Dorin은 대답할 수 없으니 그냥 여기 있어.어떤 서비스를 시작하는지 알고 싶으시면 추가해 주세요.

fwrite($log_file, $q[0] . " - ($q[1] s)". " [Stack]: $q[2]" . "\n\n");

대신

fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");

언급URL : https://stackoverflow.com/questions/4660692/is-it-possible-to-print-a-log-of-all-database-queries-for-a-page-request-in-word

반응형