나는 비트가 생각 시차를 다음 변경할 수 없기, 자연 틱이 브라우저 시간에 의해 결정된다 time()
내 scheduleNextTick()
의 방법 /wp-includes/js/heartbeat.js
파일 :
var delta = time() - settings.lastTick,
interval = settings.mainInterval;
setTimeout
함수로 다음 틱을 예약하는 데 사용되는 위치 :
if ( delta < interval ) {
settings.beatTimer = window.setTimeout(
function() {
connect();
},
interval - delta
);
} else {
connect();
}
브라우저 시간은 다음과 같이 정의됩니다.
function time() {
return (new Date()).getTime();
}
이 connect()
메소드는 ajax 호출을 포함하고always()
.always( function() {
settings.connecting = false;
scheduleNextTick();
})
다음 틱을 예약합니다.
사용 가능한 틱 간격은 5 초, 15 초, 30 초 및 60 초입니다.
짧은 틱 간격을 가진 다수의 매우 활동적인 사용자의 경우 비트가 동시에 발생하는 것처럼 보일 수 있습니다.
항상 데이터를 보유하는 것이 좋습니다. 따라서 로그인 한 사용자의 틱을 heartbeat_tick
후크로 기록 할 수 있습니다 .
add_action( 'heartbeat_tick',
function( $response, $screen_id )
{
$file = WP_CONTENT_DIR . '/ticks.log'; // Edit this filepath to your needs.
if( file_exists( $file ) && is_writeable( $file ) )
{
file_put_contents(
$file,
sprintf( "%s - Tick from user_id : %d - from screen_id : %s" . PHP_EOL,
date( 'c' ),
get_current_user_id(),
$screen_id
),
FILE_APPEND | LOCK_EX
);
}
}
, 11, 2 );
ticks.log
파일 의 예는 다음과 같습니다 .
2014-09-01T12:41:04+00:00 - Tick from user_id : 1 - from screen_id : edit-post
2014-09-01T12:41:19+00:00 - Tick from user_id : 1 - from screen_id : edit-post
2014-09-01T12:41:34+00:00 - Tick from user_id : 1 - from screen_id : edit-post
2014-09-01T12:41:56+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:42:11+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:42:20+00:00 - Tick from user_id : 3 - from screen_id : upload
2014-09-01T12:42:38+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:43:05+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:43:08+00:00 - Tick from user_id : 3 - from screen_id : attachment
2014-09-01T12:43:20+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:43:36+00:00 - Tick from user_id : 1 - from screen_id : post
2014-09-01T12:44:17+00:00 - Tick from user_id : 3 - from screen_id : profile