Heartbeat 간격(Interval) 변경 하기

너무 잦은 heartbeat 연결은 서버에 부하를 줄 수 있습니다. 특히 여러명의 편집자/저자 가 한 번에 여려 탭을 열어두고 글을 작성하는 경우가 특히 그러한데요, heartbeat control plugin 을 이용하면 이 간격(interval)을 줄일 수 있습니다.

하지만, 글 편집 화면에서는 post-lock(다른 편집자의 접근을 통제)하는 기능 때문에 그 간격이 15초로 고정되게 됩니다.

/wp-admin/js/post.js

// Set the heartbeat interval to 15 seconds if post lock dialogs are enabled.
if ( wp.heartbeat && $('#post-lock-dialog').length ) {
       wp.heartbeat.interval( 15 );
}

post-lock 을 위한 환경으로는 15초가 충분히 적당한 하지만, 위에 언급한 상황과 같이 특별한 상황에서는 이를 조정할 필요가 있습니다.

아래 예제는 ‘글’ 편집 화면에서만 간격을 heartbeat control 플러그인 등에서 지정한 값이 적용 되도록 하는 내용입니다.
(설정값이 없을 경우 60초로 설정)

function danbi_fix_heartbeat_post_lock() {
       global $current_screen;

       $load = false;
       if ( $current_screen && isset($current_screen->id) && in_array($current_screen->id, array('post', 'edit-post')) && $current_screen->post_type == 'post' )
              $load = true;

       if ( !$load )
              return;
?>
<script type="text/javascript">
jQuery(document).ready( function($) {
       // Set the heartbeat interval to 15 seconds if post lock dialogs are enabled.
       if ( wp.heartbeat ) {
              wp.heartbeat.interval( heartbeatSettings && heartbeatSettings.interval ? heartbeatSettings.interval : 60 );
       }
} );
</script>
<?php
}
add_action( 'admin_print_footer_scripts', 'danbi_fix_heartbeat_post_lock', 99 );