Resolver problemas

Diagnosticar "Agendamento falhado" ou "Missed schedule"

Revisto a 4 min de leitura WordPress cron erros

Depois de agendar um artigo pode aparecer Agendamento falhado ou Missed schedule. O aviso confirma que a publicação não foi concluída à hora prevista, mas não determina se faltou tráfego, se falhou um pedido loopback ou se ocorreu um erro durante a publicação.

1. Registe um teste controlado

Agende um artigo de teste para daqui a alguns minutos e anote a hora e o fuso horário. Quando a hora passar, visite o site uma vez:

  • Se for publicado depois da visita, a execução dependente do tráfego é uma hipótese forte.
  • Se continuar pendente, reveja o registo PHP dessa hora, Ferramentas > Saúde do site e qualquer erro de pedido loopback.

Verifique também se wp-config.php contém define('DISABLE_WP_CRON', true);. Esse valor impede que as visitas iniciem o WP-Cron; não o altere até confirmar se existe uma tarefa cron real no servidor.

2. Verifique o evento

Com o WP-CLI pode listar os eventos e comparar a sua próxima execução com a hora atual:

wp cron event list --fields=hook,next_run_gmt,next_run_relative

Localize o evento de publicação do teste. Não apague eventos recorrentes sem identificar o componente que os registou. A ordem seguinte executa todos os eventos vencidos, não apenas a publicação: pode enviar emails ou ativar tarefas da loja. Use-a em staging ou depois de rever e autorizar os seus efeitos nessa instalação:

wp cron event run --due-now

Verifique depois se o artigo é publicado e reveja o registo PHP da mesma hora. Esta execução apenas confirma que o evento pôde ser concluído nesse momento; não explica o atraso.

3. Configure um cron real apenas se for necessário

Se tiver confirmado que falta tráfego, siga o guia para substituir o WP-Cron por uma tarefa do servidor. Crie e teste primeiro a tarefa. Depois poderá definir DISABLE_WP_CRON como true para evitar execuções duplicadas.

Agende outro artigo e confirme que é publicado sem visitar o site. Reveja várias execuções e conserve um registo temporário de erros. Um plugin de cron pode ajudar a inspecionar a fila, mas não corrige um loopback bloqueado, um erro PHP nem uma tarefa do servidor mal configurada.

Hora e alcance do teste

next_run_gmt é expresso em UTC e pode diferir da hora configurada para o site. Verifique ambas antes de concluir que o evento está atrasado. Execute o WP-CLI a partir do diretório correto e com o PHP e o utilizador dessa instalação; em multisite, identifique também o site a que o artigo pertence.

Um artigo de teste pode tornar-se público e disparar avisos para os subscritores. Utilize staging ou conteúdo preparado para essa finalidade. wp cron event list mostra o agendamento atual, não um histórico de execuções bem-sucedidas.

Também lhe pode ser útil

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