HUSKY - Product Filter for WooCommerce

HUSKY Turbo Mode: Por que as Atualizações Automáticas do Cron Falham (E Como Corrigir)

O Problema

Usuários relatam que a regeneração automática de arquivos do Modo Turbo do WOOF não funciona de forma confiável:

Sintomas:

  • Modo Turbo habilitado com agendamento “Cron Diário”
  • O trabalho cron do WordPress woof_turbo_do_recreate_file não está sendo criado
  • A geração manual de arquivos funciona perfeitamente
  • As atualizações automáticas geram arquivos parciais/vazios
  • A regeneração de arquivos parece nunca ser concluída

Impacto:

  • Contagens de filtro desatualizadas exibidas aos clientes
  • Má experiência do usuário (vendo produtos que não existem)
  • Intervenção manual necessária diariamente

Por que Isso Acontece: Duas Causas Raiz

1. Condição de Corrida na Limpeza de Arquivos

Quando o WOOF regenera o arquivo turbo, ele segue este processo:

// Step 1: Clear the file
file_put_contents($turbo_file, ''); 

// Step 2: Write new data (takes time)
foreach ($products as $product) {
    // Heavy processing for each product...
    file_put_contents($turbo_file, $data, FILE_APPEND);
}

O Problema:
Se seu site tem muitos produtos (1000+), a Etapa 2 pode levar de 60 a 120 segundos. Se o max_execution_time do PHP (geralmente 30-60 segundos) for excedido, o script é encerrado no meio da escrita, deixando o arquivo vazio ou parcial.

2. Cron do WordPress Não É Cron Real

O cron do WordPress (wp-cron.php) tem limitações críticas:

Não é garantido que execute – só é acionado quando alguém visita seu site
Pode ser bloqueado – plugins de cache podem impedir a execução
Sem tarefas de longa duração – interrompido pelos limites de execução do PHP
Tempo não confiável – pode executar tarde ou nunca

Cenário real:
Seu site recebe tráfego principalmente durante o horário comercial (9h – 18h). Você agenda a regeneração turbo para as 3h. Resultado: Nunca executa porque ninguém visita às 3h para acionar o wp-cron.php.

A Solução Confiável: Cron do Lado do Servidor

Substitua o cron do WordPress por um cron real do servidor que seja executado independentemente do tráfego do site.

Passo 1: Desabilitar o Cron do WordPress

Adicione em wp-config.php (antes de /* That's all, stop editing! */):

/**
 * Disable WordPress cron - we'll use server cron instead
 */
define('DISABLE_WP_CRON', true);

Passo 2: Adicionar Entrada no Crontab do Servidor

Opção A: Usando PHP CLI (Recomendado)

# Open crontab editor
crontab -e

# Add this line (runs daily at 3 AM)
0 3 * * * php /var/www/html/yoursite/wp-cron.php >/dev/null 2>&1

Opção B: Usando wget

# Add this line to crontab
0 3 * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Opção C: Usando curl

# Add this line to crontab
0 3 * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Substitua /var/www/html/yoursite pelo caminho real da sua instalação do WordPress.

Passo 3: Aumentar os Limites de Execução do PHP

Adicione em wp-config.php:

/**
 * Increase limits for cron tasks (turbo file generation)
 */
@ini_set('max_execution_time', 300); // 5 minutes
@ini_set('memory_limit', '512M');    // 512 MB RAM

Ou crie .user.ini na raiz do seu WordPress:

max_execution_time = 300
memory_limit = 512M

Resumo

Causas raiz das falhas do cron turbo:

  1. O cron do WordPress não é confiável (dependente de tráfego)
  2. Os limites de tempo de execução do PHP interrompem tarefas de longa duração

 

Correção recomendada:

  1. ✅ Desabilitar WP_CRON
  2. ✅ Usar cron do lado do servidor
  3. ✅ Aumentar limites do PHP
  4. ✅ Agendar durante horários de baixo tráfego

Resultado: Regeneração automática e confiável do arquivo turbo com contagens precisas de produtos para seus clientes.

Ref: https://pluginus.net/support/topic/woof_turbo_do_recreate_file-cron-job-is-missing/