Desativar wp-cron.php e aumentar desempenho do WordPress

Tutorial ensina como resolver os problemas com wp-cron.php, consertando agendamentos perdidos e sobrecargas absurdas no servidor web.

Este post foi atualizado pela última vez há mais de 3 meses.

Sem dúvidas o WP-Cron (wp-cron.php) do WordPress é uma excelente ferramenta para o agendamentos de artigos e tarefas em horários pré-estabelecidos pelo gerenciador de conteúdo mais popular do planeta. Mas não importa o quão maduro o WordPress seja, o problema dos agendamentos perdidos do wp-cron.php continua existindo.

Um exemplo clássico é quando o editor faz o agendamento para a publicação de um artigo, mas em vez de obter o resultado que espera, o que aparece é apenas uma mensagem dizendo que o agendamento se perdeu.

Sem contar que em alguns casos ele pode acabar se transformando em um consumidor voraz de recursos do servidor web, impactando diretamente no tempo de carregamento de uma página, por exemplo.

Então, se você possui um site ou blog que está com perdas de agendamentos, problemas de desempenho, incluindo carregamento de páginas mais lento que o normal, neste artigo vamos ensinar como desativar o wp-cron.php (WP-Cron) do WordPress para resolver estes e tantos outros problemas relacionados.

Como desativar wp-cron.php e resolver o problema do WordPress

O que é WP-Cron

“WP-Cron” é o nome de um mecanismo interno do WordPress responsável pela execução de tarefas agendadas, programadas e, possivelmente, recorrentes.Tais como a publicação de posts agendados, limpeza de caches, entre outras.

A ferramenta é ativada por um script externo ao WP, chamado wp-cron.php. Este script está localizado na raiz do domínio e em cada visita ao site, sem que a página visitada esteja salva no cache, faz com que ele seja disparado em segundo plano, despachando as tarefas da vez.

Ou seja, por padrão, ele é acionado toda vez que uma página do seu site é requisitado. Isso até não tende a ser um problema caso o seu site tenha pouco tráfego, mas caso sua visitação seja alta, o WP-Cron pode realmente vir a ser um grande problema.

Tipos de problemas com WP-Cron

Existem algumas situações que podem fazer a WP-Cron perder os compromissos ou sobrecarregar seu site ou blog WordPress. Dentre eles estão:

Sites e blogs com pouco tráfego

Por mais injusto que pareça, sites e blogs com visitação muito baixa são, também, muito suscetíveis a desajustes e problemas relacionados ao WP-Cron.

Isso porque, de maneira grosseira, a WP-Cron depende de que ocorra uma visita no minuto exato da programação do post agendado, pois é assim que o script wp-cron.php vai ser executado.

Porém, a página visitada não pode estar em cache, caso contrário o agendador simplesmente não funciona e o seu agendamento se perde para a eternidade.

Sites muito pesados ou com problemas de programação

Se o site ou blog WordPress for muito pesado para o porte do servidor, existe a chance da wp-cron.php ser executada, mas sem conseguir chegar ao fim das suas tarefas porque o servidor “mata” todos os scripts que ficam rodando além de um tempo predeterminado que, normalmente são de 30 segundos.

Sites com alta visitação também podem disparar muitas instâncias simultâneas da WP-Cron, gerando “condições de disputa” que prejudicam o desempenho do servidor, o que inclui todos os serviços hospedados nele.

Para bom entendedor, uma “condição de disputa” é a inicialização de um processo sem que a instância anterior desse mesmo processo tenha sido finalizada.

Se o programador da tarefa agendada não se preocupar em lidar com este efeito, a tendência é que a mesma tarefa seja acionada repetidas vezes, podendo levar à exaustão dos recursos do sistema.

Da mesma forma, caso existam plugins com código ruim (ou mesmo o código do template tenha problemas) pode acontecer de isso interferir no agendador do WordPress, levando a problemas mais ou menos impossíveis de rastrear, dos quais os agendamentos perdidos são os mais evidentes.

Resolvendo os problemas com a WP-Cron

Embora sejam muitos, todos estes problemas são fáceis de resolver: basta substituir por cronjobs reais do Sistema Operacional que está instalado no servidor.

Seguem mais abaixo algumas instruções com caráter ilustrativo e, por isso, recomendamos que nossos clientes peçam ajuda ao Suporte Técnico para diagnosticar problemas relacionados com o WP-Cron — o que levará à solução do problema sem o cliente precisar mexer com nenhum tipo de código.

Como desativar wp-cron.php do WordPress

O primeiro passo é acabar com as race conditions desativando o mecanismo interno da WP-Cron. Este objetivo é facilmente alcançado pela adição de uma única linha ao arquivo wp-config.php do site ou blog.

Então, basicamente, para realizar a desativação do WP-Cron da sua instalação do WordPress, você só precisa abrir o arquivo wp-config.php e adicionar o seguinte código, imediatamente antes da frase “That’s all, stop editing! Happy blogging.“:

define('DISABLE_WP_CRON', true);Code language: JavaScript (javascript)

Esta única linha vai fazer com que o WordPress não desperdice mais recursos com tarefas agendadas — recursos estes que ficarão disponíveis para o fim mais nobre, que é atender os leitores e visitantes.

Como reativar a WP-Cron da maneira correta

Mesmo que sua implementação padrão não seja das melhores, é importante lembrar que o WordPress precisa da WP-Cron funcionando. É neste momento que entram os cronjobs do Linux.

O que são cronjobs do Linux

Os cronjobs são um recurso do Sistema Operacional do servidor que, de maneira simplificada, permite programar (ou agendar) a execução de tarefas repetitivas diretamente no servidor, sem depender da sua instalação do WordPress.

Com os cronjobs temos controle do intervalo entre cada execução, sem nenhum tipo de gambiarra e a partir de uma vez por minuto. Inclusive, este intervalo na maioria dos casos já evita a race condition.

O código que deve ser adicionado à cron do servidor para executar o wp-cron.php uma vez por minuto é o seguinte:

* * * * * php /raiz/do/dominio/htdocs/wp-cron.php /dev/null 2>&1Code language: JavaScript (javascript)

É importante ressaltar que o código acima deve estar todo em uma única linha.

Resumo sobre WP-Cron

Este artigo explicou como funciona a “WP-Cron” e os motivos que podem levá-la a não funcionar corretamente em um site ou blog rodando WordPress.

Também mostramos como resolver e contornar este tipo de problema através de uma forma simples, prática e eficaz, desativando o wp-cron.php e reativando da forma correta.

Contudo, nossa recomendação é que você entre em contato com o suporte técnico para pedir ajuda caso seus conhecimentos de programação interna do servidor não seja satisfatória. Aqui na PortoFácil contamos com uma equipe pronta e em condições de ajudar da melhor maneira possível.

Fica a dica!


Foto: Mat Brown via Pexels

Quero ser cliente da PortoFácil! Entre em contato

Leia também

Textos que têm a ver com este assunto:
TUTORIAL: como resolver erros e problemas no WordPress

Tutorial de como resolver os principais erros e problemas relacionados ao WordPress. Confira nosso passo a passo detalhado de soluções!

Novidades do WordPress 6.7.1

Conheça todas as novidades do WordPress, incluindo melhorias e aprimoramentos em segurança, desempenho e acessibilidade.

Guia completo sobre o functions.php do WordPress

Tire todas as suas dúvidas sobre o arquivo functions.php do WordPress e aprenda como editá-lo de forma correta, com total segurança.