HUSKY - Product Filter for WooCommerce

HUSKY Turbo Mode: perché gli aggiornamenti automatici del cron falliscono (e come risolverli)

Il Problema

Gli utenti segnalano che la rigenerazione automatica dei file della Modalità Turbo di WOOF non funziona in modo affidabile:

Sintomi:

  • Modalità Turbo abilitata con pianificazione "Cron giornaliero"
  • Il cron job di WordPress woof_turbo_do_recreate_file non viene creato
  • La generazione manuale dei file funziona perfettamente
  • Gli aggiornamenti automatici generano file parziali/vuoti
  • La rigenerazione dei file sembra non completarsi mai

Impatto:

  • Conteggi di filtro obsoleti mostrati ai clienti
  • Esperienza utente scadente (vedere prodotti che non esistono)
  • Necessità di intervento manuale quotidiano

Perché Succede: Due Cause Principali

1. Condizione di Competizione nella Pulizia dei File

Quando WOOF rigenera il file turbo, segue questo 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);
}

Il Problema:
Se il tuo sito ha molti prodotti (1000+), il Passo 2 può richiedere 60-120 secondi. Se il max_execution_time di PHP (di solito 30-60 secondi) viene superato, lo script termina a metà scrittura, lasciando il file vuoto o parziale.

2. Il Cron di WordPress Non è un Vero Cron

Il cron di WordPress (wp-cron.php) ha gravi limitazioni:

Non è garantito che venga eseguito – si attiva solo quando qualcuno visita il tuo sito
Può essere bloccato – i plugin di caching potrebbero impedirne l'esecuzione
Nessuna attività a lunga esecuzione – ucciso dai limiti di esecuzione di PHP
Tempistiche inaffidabili – può essere eseguito in ritardo o per niente

Scenario reale:
Il tuo sito riceve traffico principalmente durante l'orario di lavoro (9:00 – 18:00). Pianifichi la rigenerazione turbo per le 3:00. Risultato: non viene mai eseguita perché nessuno visita il sito alle 3:00 per attivare wp-cron.php.

La Soluzione Affidabile: Cron Lato Server

Sostituisci il cron di WordPress con un vero cron server che funziona indipendentemente dal traffico del sito.

Passo 1: Disabilita il Cron di WordPress

Aggiungi a wp-config.php (prima di /* That's all, stop editing! */):

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

Passo 2: Aggiungi una Voce Crontab del Server

Opzione A: Utilizzo di PHP CLI (Consigliato)

# 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

Opzione B: Utilizzo di wget

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

Opzione C: Utilizzo di curl

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

Sostituisci /var/www/html/yoursite con il percorso effettivo della tua installazione WordPress.

Passo 3: Aumenta i Limiti di Esecuzione di PHP

Aggiungi a 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

Oppure crea .user.ini nella root di WordPress:

max_execution_time = 300
memory_limit = 512M

Riepilogo

Cause principali dei fallimenti del cron turbo:

  1. Il cron di WordPress è inaffidabile (dipendente dal traffico)
  2. I limiti di tempo di esecuzione di PHP uccidono le attività di lunga durata

 

Correzione consigliata:

  1. ✅ Disabilita WP_CRON
  2. ✅ Utilizza cron lato server
  3. ✅ Aumenta i limiti di PHP
  4. ✅ Pianifica nelle ore a basso traffico

Risultato: Rigenerazione automatica e affidabile del file turbo con conteggi prodotti accurati per i tuoi clienti.

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