Compreender e otimizar o WP-Cron - conceber automatizações fiáveis no WordPress

Automações como cópias de segurança, publicações programadas ou notificações por correio eletrónico são executadas no WordPress através do sistema wp-cron. Se quiser controlar estas tarefas de forma fiável e melhorar o desempenho ao mesmo tempo, não há outra forma de evitar a otimização orientada.

Pontos centrais

  • Funcionalidadewp-cron: reage aos pedidos de página e inicia as tarefas programadas
  • Pontos fracosProblemas de execução surgem com demasiado pouco ou demasiado tráfego
  • OtimizaçãoUm cronjob do lado do servidor melhora a fiabilidade e a velocidade
  • MonitorizaçãoPlugins como o WP Crontrol tornam os cronjobs visíveis e controláveis
  • Melhores práticasIntervalos corretamente definidos e tarefas controladas mantêm o sistema estável

Como funciona o wp-cron - e porque é que isto pode ser um problema

O sistema wp-cron é um método interno utilizado pelo WordPress para executar tarefas agendadas. No entanto, ao contrário das tarefas cron clássicas num servidor, o wp-cron apenas ativo quandoquando alguém visita o seu sítio Web. Isto significa que, se não houver visitantes, as tarefas não são executadas. Num sítio muito frequentado, isto pode levar a enormes problemas de desempenho - porque o wp-cron reage sempre que uma página é carregada e gera uma carga notável. Por outro lado, com poucos visitantes, nada acontece durante muito tempo. O caching intermédio pode mesmo levar a que o wp-cron seja ignorado por completo.

Eu próprio utilizo o wp-cron em muitos projectos - e deparo-me sempre com exatamente os mesmos problemas: As tarefas Cron são executadas com atraso, duas vezes ou não são executadas de todo. Os ajustes manuais são inevitáveis, especialmente em sítios com pouco tráfego ou onde são utilizados sistemas de cache. O comportamento por vezes imprevisível pode fazer com que processos importantes fiquem bloqueados no pior cenário possível. Isto é particularmente fatal para tarefas relevantes para a segurança, como os backups. Em vez de confiar em tarefas acionadas espontaneamente, é necessária uma base mais estável. É exatamente aqui que entra a ideia de desligar a configuração padrão e utilizar um verdadeiro cronjob do lado do servidor.

Outro desafio comum no funcionamento do wp-cron é a paralelização de tarefas. Se vários processos forem iniciados ao mesmo tempo - por exemplo, um plugin de cópia de segurança que cria ficheiros grandes enquanto outro plugin está a desencadear actualizações - ocorrem frequentemente quedas de desempenho significativas. O problema json_last_error() ou os tempos limite do processo ocorrem nesses momentos e são normalmente difíceis de depurar. É precisamente por isso que é essencial, em ambientes maiores, regular a execução do cron mais de perto. Ao mesmo tempo, os processos individuais podem ser desacoplados para que não iniciem todos de forma síncrona. Isto minimiza picos de carga indesejados.

Ultrapassar os limites da configuração standard

Por predefinição, o wp-cron é executado com cada ação do visitante. Se o seu sítio for muito visitado, existe o risco de sobrecarga. Se tiver poucos visitantes, as tarefas agendadas são frequentemente executadas demasiado tarde. A solução? Desligue a função padrão e entregue o controlo - a um verdadeiro cronjob do lado do servidor. Isto irá melhorar a estabilidade e a velocidade. O primeiro passo é simples: desativar a chamada interna no ficheiro wp-config.php.

define('DISABLE_WP_CRON', true);

O segundo passo é configurar um cron job no servidor, idealmente através de SSH ou do painel de alojamento. Em O Plesk é particularmente fácil de configurar. Utilize um comando como este:

*/15 * * * * * * wget -q -O - https://deine-webseite.de/wp-cron.php?doing_wp_cron >/dev/null 2>&1

É claro que pode definir intervalos diferentes aqui. Para sites com muito tráfego, pode valer a pena chamar o cron a cada 5 minutos se tiver muitos processos com tempo crítico. Para um sítio mais calmo, um intervalo de 30 minutos ou mesmo uma hora pode ser suficiente. Esta flexibilidade significa que o sistema já não está dependente do comportamento do utilizador.

As vantagens da versão do lado do servidor

Isto permite-lhe deixar as limitações do sistema cron controlado pelos visitantes. Iniciar as suas tarefas Controlado pelo tempo e independente do tráfego. Isto evita múltiplas instâncias e reduz a latência. O desempenho do sítio Web melhora significativamente porque o wp-cron já não carrega todos os pedidos de página, o que poupa recursos do servidor e reduz os tempos de carregamento. Isto pode fazer uma diferença notável, especialmente em sistemas de alojamento com tempos de execução limitados de CPU e PHP.

Se também só quiser executar determinadas tarefas à noite porque consomem muitos recursos - como gerar estatísticas extensas - uma abordagem clássica de cronjob pode desencadear isso exatamente depois da meia-noite. Os seus visitantes não se aperceberão de nada, uma vez que o sítio permanece descarregado durante o dia. Para projectos com fusos horários diferentes, pode ir ainda mais longe e ajustar a hora exacta para que a chamada cron se baseie nas horas de ponta do seu principal grupo-alvo, por exemplo.

Uma vantagem subestimada é a melhoria da resolução de problemas: com um cronjob do lado do servidor, é possível ter saídas ou mensagens de erro registadas especificamente. Isto permite-lhe descobrir se um script falha sem que o utilizador veja uma mensagem de erro no sítio Web. Especialmente no caso de tarefas complexas que extraem e processam dados de APIs externas, é possível intercetar e analisar especificamente as informações de depuração sem perturbar o sistema em funcionamento.

Particularmente em cenários de alta carga - por exemplo, com grandes lojas online ou sites de membros - é muito mais aconselhável usar o cronjob do lado do servidor. Aqui, o wp-cron interno pode levar a uma concorrência altamente desfavorável. Se várias centenas de utilizadores estiverem activos ao mesmo tempo, o wp-cron é chamado sempre que uma página é acedida. A carga do servidor aumenta em conformidade. Com uma desativação limpa em wp-config.php e uma programação bem doseada ao nível do servidor, toda a infraestrutura é aliviada.

Monitorizar o WP-Cron: Fique de olho na sua automação

Se quiser ver, utilizar ou ajustar as suas tarefas planeadas, pode fazê-lo comodamente com o plugin WP Crontrol. Mostra-lhe uma lista de todas as tarefas cron activas - incluindo a hora, o intervalo de repetição e a função. Intervenho frequentemente aqui para eliminar tarefas desactualizadas ou criar novos testes. As tarefas simples podem ser adicionadas diretamente na interface, como uma chamada diária para atualizar um mapa do site.

Utilização típica no plugin:

  • Ver cronjobs activos, incluindo o tempo de execução
  • Eliminação direta, edição ou execução de testes de tarefas
  • Criação manual de chamadas recorrentes

Especialmente para actualizações, cópias de segurança ou distribuição de boletins informativos, um olhar sobre o WP Crontrol garante que reconhece um comportamento sem erros - e pode eliminar os causadores de problemas. Por exemplo, encontrei antigos cron jobs em alguns projectos que já não eram necessários, mas que continuavam a ser reportados de hora a hora. A remoção desses cadáveres cria espaço e estabilidade para tarefas novas e realmente necessárias.

Se quiser aprofundar a monitorização, também pode registar a saída das tarefas cron utilizando um ficheiro de registo separado. Isto permite-lhe identificar quaisquer erros ou avisos mais rapidamente. Isto é particularmente útil para actualizações regulares ou limpezas de bases de dados, uma vez que pode ver imediatamente se um processo está preso ou se uma tabela está bloqueada. O WP Crontrol pode ser o primeiro porto de escala aqui, enquanto um registo de servidor separado fornece os detalhes.

Casos de utilização populares para o wp-cron no WordPress

A arquitetura wp-cron está profundamente incorporada no núcleo do WordPress. Controla muitos dos processos mais importantes. Quer sejam posts agendados ou funções relevantes para a segurança - o wp-cron é o centro de controlo central para processos recorrentes. Utilizo-o regularmente para as seguintes tarefas:

Tarefa Objetivo
Publicações planeadas O correio fica online automaticamente
Processos de cópia de segurança Armazenamento regular de dados sensíveis
Manutenção da base de dados Limpeza de revisões, transientes
Atualização da cache Conteúdo acabado de renderizar
Consultar métricas de SEO Monitorização da indexação e da classificação

Muitas destas funções são controladas por plugins - por exemplo, ferramentas de mapa do sítio ou fornecedores de cópias de segurança. BackupCloud Protect utiliza o wp-cron, por exemplo, para efetuar continuamente cópias de segurança de todos os dados. Os plugins de segurança também utilizam o wp-cron para verificar regularmente a integridade da base de dados ou atualizar as listas de bloqueio de IP.

A automatização das análises SEO e dos ajustamentos de conteúdos, em particular, está a ganhar importância, uma vez que muitos operadores de sítios Web confiam cada vez mais em ferramentas para monitorizar as suas classificações ou perfis de backlinks. Este tipo de tarefa também é frequentemente executado através do wp-cron e pode levar a uma carga se houver uma grande quantidade de dados. Ao mudar certos processos para uma fase nocturna, pode garantir que recursos valiosos não são utilizados durante os períodos de pico de utilização. Isto mantém a experiência do utilizador consistentemente elevada.

Evite estes erros típicos com o wp-cron

No meu trabalho em sítios Web de elevado tráfego, vejo frequentemente os mesmos obstáculos com o wp-cron. Estes incluem, por exemplo, a dependência da operação padrão - mesmo que o sítio tenha um número muito baixo de visitantes. Como resultado, as cópias de segurança não aparecem ou os posts nunca aparecem. Demasiadas tarefas paralelas também sobrecarregam o servidor. Se conteúdos importantes forem preparados, guardados e enviados ao mesmo tempo, os tempos de carregamento aumentam consideravelmente.

Outro problema: os sistemas com caches agressivos bloqueiam completamente a chamada wp-cron. As páginas afectadas não mostram qualquer atividade, apesar de estarem agendadas várias tarefas. A otimização é essencial se quiser que o seu site funcione de forma fiável. Também encontramos frequentemente erros de script que enviam tarefas cron individuais para loops contínuos sem serem notados. Isto não só consome recursos, como também pode tornar os dados inconsistentes. A monitorização regular evita esta situação.

Outro erro clássico é definir o tempo demasiado apertado. Por exemplo, iniciar chamadas cron a cada 1-2 minutos para ser supostamente "crítico em termos de tempo" muitas vezes faz mais mal do que bem à estabilidade. Isso ocorre porque muitos processos em segundo plano simplesmente precisam de tempo e, em seguida, iniciam em loops intermináveis antes mesmo de a tarefa anterior ter sido concluída. Por isso, deve escolher intervalos mais generosos. Ninguém precisa que o servidor esteja constantemente sobrecarregado só para que um script de backup possa salvar dados inúteis a cada minuto.

Manter o desempenho sob controlo - graças à otimização orientada

Depois de mudar para um cronjob de servidor, não só beneficiará de melhores tempos de execução - a sua instalação WordPress também será mais estável. As interrupções de curto prazo causadas por atrasos de carregamento, por exemplo, desaparecerão porque as tarefas de fundo inesperadas deixarão de ter lugar. Em combinação com outras técnicas, como Otimização do desempenho do WordPress a experiência do utilizador será significativamente melhor.

Também recomendo a monitorização regular do wp-cron - seja com plugins como o Crontrol ou com os registos do servidor. Para sítios produtivos com funções de loja ou de membro, cada minuto conta. E é aqui que a automatização é essencial para o bom funcionamento. A monitorização estruturada permite-lhe reconhecer, numa fase inicial, se as tarefas individuais estão a demorar demasiado tempo ou mesmo a falhar. Isto permite-lhe tomar contra-medidas específicas e substituir um plugin que se revela uma armadilha de recursos excessiva, por exemplo.

As empresas que processam várias centenas de encomendas por dia devem utilizar o toda a cadeia de processos ver: Actualizações de stocks, notificações de expedição, criação de facturas ou análises estatísticas - tudo isto pode ser executado através de cronjobs. Com a configuração correta, é possível evitar conflitos, por exemplo, se um plugin bloquear ao escrever na base de dados. Pode definir manualmente horas de início coordenadas para que dois trabalhos particularmente intensivos em termos de computação não estejam activos ao mesmo tempo. Este ajuste fino geralmente compensa após um curto período de tempo, pois os utilizadores notam um melhor desempenho da loja e as falhas tornam-se menos frequentes.

WP-Cron como chave para a automatização controlada

Quer se trate de controlo de actualizações, processamento de imagens, soluções de arquivo ou marcações em série - o wp-cron é o seu centro de controlo. Se o otimizar corretamente, os serviços em segundo plano serão executados de forma controlada e segura, sem quaisquer efeitos negativos no seu frontend. Com verdadeiros cron jobs programados no lado do servidor, pode alcançar um nível de precisão e fiabilidade que o WordPress não oferece por defeito. Ao mesmo tempo, mantém sempre o controlo sobre os picos de carga e pode identificar e corrigir as áreas problemáticas de forma orientada.

Especialmente em projectos extensos, vale a pena dividir áreas individuais em tarefas cron separadas. Por exemplo, pode executar primeiro a limpeza da base de dados - e só acionar a tarefa seguinte, como a criação de cópias de segurança, quando este processo tiver sido concluído com êxito. Se pretender um controlo ainda mais preciso, pode até definir diferentes intervalos de tempo, dependendo dos requisitos e da urgência da tarefa. A única coisa importante é manter uma visão geral e documentar claramente quais os processos que estão a decorrer. Uma vista de olhos no WP Crontrol ou nos registos correspondentes do servidor deve ser suficiente para evitar a ativação de tarefas duplicadas ou permitir inadvertidamente que os restos antigos continuem em loop.

Todas as automatizações têm de ser planeadas. A minha dica: faça uma lista de todas as tarefas wp-cron que o seu sítio executa. Classifique-as por relevância e necessidade de recursos. Determine quais são as janelas de tempo mais adequadas. Em muitos projectos, é suficiente que as tarefas acumuladas, como cópias de segurança ou relatórios extensos, sejam executadas à noite, enquanto apenas verificações muito curtas, mas recorrentes, são frequentemente realizadas durante o dia (por exemplo, se novos comentários precisam de ser aprovados). Isto garante que todas as tarefas automatizadas se complementam em vez de se bloquearem ou sobreporem de forma descontrolada.

No final, todos beneficiam: os seus utilizadores experimentam um funcionamento suave e tempos de carregamento rápidos, você mantém uma visão geral - e o seu servidor funciona de forma mais estável. Se estiveres preparado para possíveis estrangulamentos e configurares cuidadosamente a tua automatização, o wp-cron é uma ferramenta poderosa e não uma potencial fonte de erros. Os sítios WordPress que gerem as tarefas cron de forma profissional destacam-se muitas vezes claramente da concorrência, onde os processos apenas são executados aleatoriamente ou não são executados de todo. Numa altura em que a fiabilidade e a velocidade são cruciais, vale ainda mais a pena olhar para os bastidores.

Artigos actuais