O Heartbeat é uma API incorporada ao WordPress que permite que o navegador se comunique com o servidor para fazer atualizações de front-end quase em tempo real.
Em hospedagens compartilhadas ela também pode enviar um grande número de solicitações ao servidor, resultar em alta utilização da CPU e, conforme o usuário atinge o limite de sua cota, pode resultar na suspensão da conta, devido a alta taxa de uso do processador.
Como a solução salva as edições dos usuários em ambientes colaborativos, ela também pode travar a página e impedir qualquer alteração enquanto outra pessoa acessa a página. Neste artigo discutimos a funcionalidade do Heartbeat, veja a seguir:
Como a Heartbeat funciona?
Conforme o próprio nome indica, Heartbeat (batimento cardíaco) é uma API que envia pulsos contínuos — e gatilhos de eventos, ao servidor. O principal objetivo é sincronizar as informações entre o seu painel WordPress e o servidor.
Por exemplo, durante a criação de um post do editor, o usuário tem a opção de salvar automaticamente as alterações enquanto o trabalho é executado. Esse processo é realizado de forma periódica até o envio da publicação.
Mas em sistemas colaborativos, quando vários usuários acessam o mesmo conteúdo, uma função de travamento impede que um usuário salve as edições enquanto o outro trabalha.
Esse processo de exibição de alterações de front-end quase em tempo real, também permite que usuários com a API em seu CMS visualize as vendas realizadas em seu e-commerce praticamente no momento em que elas ocorrem. Veja o funcionamento da Heartbeat:
- quando uma página é carregada, o código de pulsação do usuário configura um intervalo (chamado de “tick”) para execução a cada 15-60 segundos;
- ao alcançar esse intervalo, o Heartbeat reúne dados para enviá-los ao servidor por meio de um evento jQuery e então aguarda uma resposta;
- no servidor, uma ferramenta admin-ajax pega os dados transmitidos, prepara uma resposta, filtra a resposta e retorna os dados no formato JSON;
- o usuário recebe esses dados e dispara um evento jQuery final para indicar que os dados foram recebidos.
Como usar essa API?
O procedimento básico para personalizar os eventos da Heartbeat consiste em:
- incluir campos adicionais nos dados a serem enviados (evento JS heartbeat-send);
- detectar os campos enviados no PHP e adicionar campos de resposta (filtro recebido por heartbeat_r);
- processar dados retornados em JS (JS heartbeat-tick).
Logo, o uso da API requer dois processos: o envio de dados e o recebimento de retornos em JavaScript. O evento também exige que haja um filtro no servidor para processar dados passados em PHP. Veja as orientações de uso da API segundo o site WordPress.org a seguir.
Envio de dados para o servidor
Quando a Heartbeat envia dados para o servidor, o usuário pode incluir informações personalizadas ou um valor verdadeiro simples para indicar que a espera de uma resposta específica:
jQuery( document ).on( 'heartbeat-send', function ( event, data ) {
// Add additional data to Heartbeat data.
data.myplugin_customfield = 'some_data';
});
Detecção dos dados recebidos e adição de dados à resposta do servidor
// Add filter to receive hook, and specify we need 2 parameters.
add_filter( 'heartbeat_received', 'myplugin_receive_heartbeat', 10, 2 );
/**
* Receive Heartbeat data and respond.
*
* Processes data received via a Heartbeat request, and returns additional data to pass back to the front end.
*
* @param array $response Heartbeat response data to pass back to front end.
* @param array $data Data received from the front end (unslashed).
*/
function myplugin_receive_heartbeat( $response, $data ) {
// If we didn't receive our data, don't send any back.
if ( empty( $data['myplugin_customfield'] ) ) {
return $response;
}
// Calculate our data and pass it back. For this example, we'll hash it.
$received_data = $data['myplugin_customfield'];
$response['myplugin_customfield_hashed'] = sha1( $received_data );
return $response;
}
Recebimento dos dados de volta no front-end
jQuery( document ).on( 'heartbeat-tick', function ( event, data ) {
// Check for our data, and use it.
if ( ! data.myplugin_customfield_hashed ) {
return;
}
alert( 'The hash is ' + data.myplugin_customfield_hashed );
});
Nem todos os recursos precisam executar as três etapas. Por exemplo, o usuário pode não precisar enviar dados para o servidor, o que exigirá que ele execute apenas as duas últimas etapas.
Como parar a API Heartbeat?
Sem a API Heartbeat todas as edições feitas em um documento de página podem ser perdidas na ocorrência de qualquer problema, a menos que o usuário se lembre de apertar o botão “Salvar Como Rascunho” constantemente.
Além disso, ao parar a API, o usuário não terá mais acesso aos recursos de revisões do WordPress e ao instalar plugins baseados na Heartbeat, não receberá as notificações em tempo real nem poderá consultar os recursos de informação do site.
A única indicação para parar a Heartbeat é quando o usuário não trabalha de forma colaborativa ou não precisa de informações sobre o site em tempo real.
Para controlar a frequência que a API Heartbeat envia os pulsos de dados para o servidor, basta instalar o plugin Heartbeat Control:
acesse as configurações do plugin em “Configurações” » “Heartbeat Control Settings” para definir o comportamento da API;
- em “Heartbeat Behavior” o usuário pode habilitar, desabilitar e modificar a Heartbeat;
- na seção “Locations” o usuário escolhe o ambiente que será controlado (Painel do WordPress, Frontend e Editor de Post);
- já na opção “Frequency” é possível modificar a quantidade de chamados para o servidor. O plugin permite configurar uma variação de callbacks entre 15 e 300 segundos;
(Fonte)
Para que o usuário consiga parar a API Heartbeat sem a instalação de um plugin, basta adicionar as linhas de código no arquivo functions.php do tema ativo:
- clique em “Aparência” » “Editor de Temas”;
- verifique qual o tema está ativo;
- acesse “Funções do tema” no menu de navegação no lado direito do dashboard;
- cole a linha de código depois da tag de abertura <?php:
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat()
{ wp_deregister_script('heartbeat');
}
- clique em “Atualizar Arquivo”.
(Fonte)
Se você utiliza um serviço de hospedagem com recursos limitados, pode considerar a instalação do Heartbeat Control para limitar o volume de pulsos para o servidor. Isso poderá aumentar consideravelmente o desempenho do seu site.
Mas se você trabalha de forma colaborativa, a Heartbeat é um recurso imprescindível para salvar as atualizações constantes do seu site.
Considere optar por uma hospedagem especializada, assim, você não precisará se preocupar com o uso de recursos muito menos com as alterações que interferem no desempenho da sua página. O Stage é uma plataforma de hospedagem altamente indicada para qualquer página WP na web.
Conheça também a Rest API e um conjunto de boas práticas utilizadas nas requisições HTTP para aplicações na web.



