Je pense que les battements sont décalés par nature, car la prochaine coche est déterminée par le temps du navigateur time()
dans la scheduleNextTick()
méthode du /wp-includes/js/heartbeat.js
fichier:
var delta = time() - settings.lastTick,
interval = settings.mainInterval;
où il est utilisé pour planifier le prochain tick avec la setTimeout
fonction:
if ( delta < interval ) {
settings.beatTimer = window.setTimeout(
function() {
connect();
},
interval - delta
);
} else {
connect();
}
L'heure du navigateur est définie comme suit:
function time() {
return (new Date()).getTime();
}
La connect()
méthode contient l'appel ajax et utilisealways()
.always( function() {
settings.connecting = false;
scheduleNextTick();
})
pour planifier le prochain tick.
Les intervalles de ticks disponibles sont 5s, 15s, 30s et 60s.
Pour un grand nombre d'utilisateurs très actifs, avec un intervalle de tick court, les battements peuvent sembler se produire simultanément.
Il est toujours bon d'avoir des données, vous pouvez donc enregistrer les ticks des utilisateurs connectés, avec le heartbeat_tick
crochet:
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 );
Voici un exemple tiré du ticks.log
fichier:
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