A API de pulsação do WordPress usa admin-ajax.php para executar chamadas AJAX. Se o Usuário X deixar o navegador aberto, muitas chamadas serão feitas para o servidor, sendo que cada uma delas ocorrerá quando houver uma "batida". Agora, se o Usuário Y deixar o navegador aberto, muitas outras chamadas serão feitas para o servidor, sendo que cada uma dessas chamadas ocorrerá quando houver uma "batida". É possível que um site grande também tenha o Usuário A, o Usuário B e o Usuário C, todos fazendo o mesmo.
Minha pergunta:
Considerando que muitos usuários podem acessar um site simultaneamente, os batimentos da API de pulsação do WordPress são escalonados (a batida do usuário X ocorre alguns segundos antes da batida do usuário Y) ou ocorre uma batida exatamente da mesma maneira tempo para todos os usuários?
Se as 'batidas' não forem escalonadas, minha preocupação é uma carga muito pesada no servidor no momento em que ocorre uma 'batida'.
fonte
Respostas:
Eu acho que as batidas são escalonadas por natureza, porque o próximo tick é determinado pelo tempo do navegador
time()
dentro doscheduleNextTick()
método no/wp-includes/js/heartbeat.js
arquivo:onde é usado para agendar o próximo tick com a
setTimeout
função:O horário do navegador é definido como:
O
connect()
método contém a chamada ajax e usaalways()
para agendar o próximo tick.
Os intervalos de escala disponíveis são 5s, 15s, 30s e 60s.
Para um grande número de usuários muito ativos, com um intervalo curto de tique, as batidas podem parecer acontecer simultaneamente.
É sempre bom ter alguns dados, para que você possa registrar os ticks dos usuários logados, com o
heartbeat_tick
gancho:Aqui está um exemplo do
ticks.log
arquivo:fonte