Desempenho e monitorização

Substituir o WP-Cron por uma tarefa agendada do alojamento

Revisto a 4 min de leitura WordPress desempenho cron

O WordPress utiliza o WP-Cron para executar eventos pendentes, como publicações agendadas e tarefas de plugins. Habitualmente, são as visitas que ajudam a acionar a sua execução. Isto simplifica a instalação, mas um site com pouco tráfego pode executar tarefas tarde e um site com muita atividade pode preferir um acionamento de sistema.

Não se trata de eliminar as tarefas, mas de mudar a forma como se iniciam. Desativar o WP-Cron sem um substituto operacional pode deixar pendentes publicações, emails ou operações da loja.

Opção com o Softaculous

No WordPress Manager by Softaculous, localize a instalação correta e a opção WordPress Cron (wp-cron.php). O Softaculous permite desativar o acionamento por visitas e substituí-lo por uma tarefa do sistema.

Depois reveja Cron Jobs no cPanel: verifique se foi criada, que instalação executa e com que frequência. A modalidade documentada pelo Softaculous pode ser horária; não assuma que serve para tarefas que devem ser executadas a cada poucos minutos. Não acrescente outra tarefa equivalente se já existir uma.

Consulte o gestor oficial do Softaculous para conhecer as funções da sua versão e teste um evento agendado antes de dar a alteração por concluída.

Configuração manual

Guarde uma cópia do wp-config.php e reveja as tarefas existentes. A partir de Cron Jobs do cPanel, prepare uma tarefa com a frequência de que a aplicação precisa. A cada cinco minutos pode ser um ponto de partida, mas não garante precisão ao segundo nem que uma tarefa longa tenha terminado antes da seguinte.

Se utilizar um pedido HTTPS, teste primeiro este comando com o domínio e o caminho reais do WordPress:

curl --fail --silent --show-error --max-time 60 --output /dev/null 'https://oseudominio.com/wp-cron.php?doing_wp_cron'

Verifique que não responde um redirecionamento, uma página de login, um desafio da firewall ou uma cópia em cache. O comando não segue redirecionamentos: utilize o URL final correto. O limite de espera do cliente não demonstra que o trabalho do servidor tenha parado.

Se o WordPress estiver num subdiretório, inclua-o. No formulário do cPanel, os campos de data e hora estão separados do comando; não cole aí uma linha completa de crontab se só for pedido o comando.

Depois de o substituto estar testado e agendado, acrescente ao wp-config.php, antes de carregar o WordPress:

define('DISABLE_WP_CRON', true);

Se a constante já existir, altere o seu valor sem a duplicar. O procedimento do WordPress explica esta mudança de acionamento.

Verificar tarefas e evitar duplicados

Verifique uma publicação agendada de teste e os eventos importantes dos seus plugins. Reveja as tarefas em atraso e os erros. Uma resposta HTTP correta não garante que todos os callbacks tenham terminado sem falhas.

Se preferir executar os eventos através do WP-CLI, verifique com o programador o caminho, a versão de PHP, o contexto do site e a política de concorrência. Não mantenha ao mesmo tempo várias tarefas equivalentes do Softaculous, HTTP e WP-CLI.

Se algo falhar, reponha o acionamento anterior e retire ou pause o substituto que não funciona. Não deixe DISABLE_WP_CRON ativo enquanto investiga sem outra via que execute os eventos. Em multisite, reveja as necessidades de cada site da rede.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.