Passa al contenuto principale

Generazione Automatica — Attività Cron

Mantieni il catalogo di Facebook e Instagram sempre aggiornato senza interventi manuali, pianificando l'esecuzione automatica del generatore di feed sul tuo server.

note

Disponibile dalla v1.0.0

Panoramica

Facebook e Instagram scaricano il tuo catalogo prodotti secondo una propria pianificazione — da una volta all'ora a una volta al giorno. Per fare in modo che Meta veda sempre i tuoi prezzi, le disponibilità e i dati prodotto più recenti, devi rigenerare il feed regolarmente e in modo automatico.

Il modulo include un pannello dedicato Generazione Automatica (Attività Cron) all'interno della pagina di configurazione nel Back Office. Fornisce un URL di generazione e il percorso dello script già compilati con la tua chiave segreta, insieme ai comandi esatti per tre diversi metodi di esecuzione. Copia e incolla il comando adatto al tuo ambiente di hosting nello schedulatore di attività del server, imposta la frequenza e hai finito.

L'URL di generazione è protetto da una chiave segreta (FPF_SECRET_KEY). Senza la chiave corretta nella richiesta, il generatore si rifiuta di avviarsi. Ciò significa che l'URL può essere inserito direttamente in un comando cron in tutta sicurezza, anche se punta a un endpoint pubblico.

Trovare il Pannello Attività Cron

  1. Vai su Moduli > Gestore moduli e clicca su Configura per Facebook & Instagram Product Catalogue Feed Pro.
  2. Clicca sulla scheda Generazione Automatica (Attività Cron) nella navigazione del modulo.

Il pannello mostra:

  • L'URL — l'URL HTTPS completo di generazione con la tua chiave segreta incorporata.
  • Il Percorso Script — il percorso server del file cron.php con la chiave come argomento di query, da usare quando il pannello di controllo richiede un percorso file anziché un URL.
  • Il Comando — comandi shell pronti all'uso con cURL, wget e PHP CLI.

Pannello Generazione Automatica (Attività Cron) con l'URL di generazione, il percorso script e le opzioni di comando

Tutti e tre i comandi includono >/dev/null 2>&1 nell'output mostrato nel pannello. Mantieni questo suffisso — scarta l'output della generazione in modo che il server non riempia i log né invii avvisi email ad ogni esecuzione.

Confronto tra i Tre Metodi

cURL (Consigliato)

curl -l -k "https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=YOURKEY" >/dev/null 2>&1

cURL è il metodo preferito per la maggior parte degli ambienti di hosting Linux. Segue i redirect HTTP (-l), salta la verifica del certificato SSL (-k) e si chiude correttamente dopo la richiesta. Poiché cURL effettua una richiesta HTTP, la generazione viene eseguita con le impostazioni PHP del server web — si applicano i limiti di tempo di esecuzione, ma il modulo tenta di aumentarli automaticamente all'avvio.

Se il tuo feed è protetto da autenticazione HTTP Basic (configurata nella scheda Protezione Feed), il pannello aggiunge automaticamente -u "username:password" al comando.

Usa cURL quando:

  • Il pannello di controllo del tuo hosting (cPanel, Plesk, Runcloud, ecc.) ha un campo per il comando cron.
  • Hai dimestichezza con la sintassi cron standard di Linux.
  • Vuoi l'opzione più semplice e compatibile.

wget (Alternativa)

wget -O - -q -t 1 "https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=YOURKEY" >/dev/null 2>&1

wget funziona in modo identico a cURL dal punto di vista del modulo. Usalo se cURL non è installato sul tuo server o se il tuo provider di hosting fornisce un modello cron basato su wget. Il flag -O - indirizza l'output su stdout, -q sopprime l'output di avanzamento e -t 1 limita i tentativi a uno solo.

PHP CLI

/usr/bin/php -q /var/www/html/modules/facebookproductsfeed/cron.php --fpf_secret_key="YOURKEY"

Il pannello fornisce due varianti PHP CLI: una che utilizza il percorso esatto del binario PHP rilevato sul tuo server (PHP_CLI_PATH), e una che usa il comando generico php per gli ambienti in cui PHP è nel percorso di sistema.

PHP CLI avvia il generatore direttamente come processo da riga di comando, completamente al di fuori dei vincoli del server web. Non ci sono timeout HTTP, nessun limite di tempo di esecuzione imposto da Apache o Nginx e nessun rischio che il server web interrompa il processo a metà generazione. Il generatore rileva di essere eseguito sotto CLI e imposta le variabili di conseguenza.

Usa PHP CLI quando:

  • Il catalogo è molto grande e la generazione via web va in timeout.
  • I metodi cURL o wget falliscono sistematicamente prima di completare il feed.
  • Il tuo hosting fornisce accesso SSH o tramite comandi cron.

L'argomento --fpf_secret_key è obbligatorio — il punto di ingresso CLI lo valida nello stesso modo in cui lo fa l'endpoint HTTP.

Raccomandazioni sulla Frequenza

Facebook aggiorna la propria copia del catalogo secondo una pianificazione autonoma. Rigenerare più spesso di quanto Facebook esegua il polling non serve a nulla, ma rigenerare meno spesso significa che Meta potrebbe mostrare prezzi obsoleti o prodotti esauriti. Il pannello del modulo riassume le raccomandazioni in questo modo:

Dimensione catalogo / comportamento stockFrequenza consigliata
Catalogo piccolo o medio (generazione inferiore a 8 minuti)Ogni ora (0 * * * *)
Catalogo grande (oltre 8 minuti) o variazioni stock poco frequentiOgni 3 o 6 ore (0 */3 * * * oppure 0 */6 * * *)
Catalogo prevalentemente statico — prodotti raramente esauritiUna volta al giorno (0 0 * * *)

Consiglio dal pannello: Allinea il minuto del cron al tempo di generazione. Se il feed impiega 5 minuti per essere generato, pianifica il job al minuto 50 (50 * * * *). Il feed sarà pronto circa al minuto 55, offrendo a Facebook un file aggiornato quando controlla all'inizio dell'ora.

Puoi verificare quanto ha impiegato l'ultima generazione consultando la scheda Dashboard dopo un'esecuzione manuale.

Combinare con la Modalità Ciclo

Se il catalogo è abbastanza grande da non poter essere elaborato in un'unica richiesta prima che scada il limite di esecuzione del server, attiva la generazione basata su cicli. Con la modalità ciclo attiva, ogni esecuzione cron elabora un batch di prodotti e salva i progressi; la successiva esecuzione riparte da dove la precedente si è fermata. Il feed rimane disponibile nella versione precedente mentre quella nuova viene costruita progressivamente su più cicli.

La frequenza consigliata per la modalità ciclo è ogni 10–15 minuti, in modo da completare l'intero catalogo in un intervallo ragionevole distribuito su più esecuzioni cron.

Per tutti i dettagli sulla configurazione della dimensione del batch e sul funzionamento della modalità ciclo, consulta Generazione Basata su Cicli per Cataloghi di Grandi Dimensioni.

Generazione Multi-Shop

Per impostazione predefinita, una singola chiamata cron genera i feed per tutti i negozi in sequenza. Se hai più negozi e vuoi scaglionare la generazione — o isolare un negozio particolarmente grande — puoi puntare a un negozio specifico aggiungendo &id_shops=SHOPID all'URL, oppure --id_shops="SHOPID" al comando PHP CLI. Il pannello mostra i comandi per ogni negozio in una tabella a schede quando il tuo store ha più di un negozio configurato.

Note Importanti

  • Rotazione della chiave segreta: La chiave segreta è derivata dalla _COOKIE_KEY_ del tuo store. Non cambia a meno che tu non reinstalli il modulo o non azzeri manualmente il valore salvato. Se la ruoti, aggiorna tutti i comandi cron.
  • Versione del formato URL: I negozi che aggiornano da versioni precedenti del modulo potrebbero vedere un avviso che indica che il formato dell'URL cron è cambiato (FPF_NEW_CORN_URL). Segui le istruzioni nel pannello per aggiornare i comandi salvati al formato URL attuale.
  • Varnish e altre cache: L'endpoint di generazione invia gli header Cache-Control: no-store e Pragma: no-cache. Se utilizzi un reverse proxy, assicurati che trasmetta questi header e non metta in cache la risposta di generazione.
  • Output: Lo script di generazione produce testo di avanzamento. Reindirizza sempre l'output su /dev/null 2>&1 (già incluso nei comandi del pannello) per evitare avvisi email o accumulo di log sul server.
  • Alternativa PrestaShop 1.6: Su PrestaShop 1.6, il pannello mostra anche una sezione per l'utilizzo del modulo integrato di PrestaShop Cron tasks manager. È l'opzione più semplice, ma potrebbe non essere sempre affidabile — verifica il campo "ultima esecuzione" del modulo dopo il primo orario pianificato per confermare che funzioni correttamente.

Risoluzione dei Problemi

ProblemaSoluzione
Il feed non si aggiorna anche se il cron viene eseguitoVerifica che l'URL nel comando cron includa il fpf_secret_key corretto. Apri l'URL nel browser — se vedi "Non puoi accedere a questa pagina", la chiave è errata o mancante.
Il cron si avvia ma la generazione si interrompe a metàPassa al metodo PHP CLI, che non ha timeout HTTP. In alternativa, attiva la modalità ciclo ed esegui il cron più frequentemente (ogni 10–15 minuti).
Il server invia avvisi email ad ogni esecuzione cronAggiungi >/dev/null 2>&1 alla fine del comando cron per scartare tutto l'output.
L'URL di generazione nel vecchio comando cron ha smesso di funzionareIl modulo è stato aggiornato e il formato URL è cambiato. Vai alla scheda Generazione Automatica (Attività Cron), copia il nuovo URL mostrato lì e sostituisci quello vecchio nel tuo cron.
Il comando PHP CLI fallisce con "file not found"Il percorso script mostrato nel pannello usa la directory effettiva del modulo sul tuo server. Verifica che il percorso non sia cambiato (ad esempio dopo aver spostato PrestaShop in una cartella diversa).
Le credenziali Basic Auth non sono incluse nel comandoI comandi cURL e wget mostrati nel pannello includono automaticamente -u "user:pass" quando l'autenticazione Basic è configurata nella scheda Protezione Feed. Imposta prima le credenziali lì.

Domande Frequenti

Con quale frequenza dovrei eseguire il cron job?

Per la maggior parte dei negozi, una volta all'ora è l'ideale. Se il feed impiega più di 8 minuti per essere generato, eseguilo ogni 3 o 6 ore. I cataloghi molto stabili possono usare una pianificazione giornaliera.

Devo configurare un cron job o posso generare il feed manualmente?

Un cron job è fortemente raccomandato per qualsiasi negozio attivo. La generazione manuale va bene per i test, ma se si dimentica di rigenerare, Facebook e Instagram continueranno a mostrare prodotti obsoleti fino a quando non si provvede.

Quale metodo dovrei usare — cURL, wget o PHP CLI?

Inizia con cURL; funziona su quasi tutti gli ambienti di hosting Linux standard. Se la generazione va sistematicamente in timeout o si interrompe a metà, passa a PHP CLI, che viene eseguito al di fuori dei limiti di tempo del server web.

Lo stesso URL cron può essere usato per più negozi?

Sì. Per impostazione predefinita, una singola chiamata URL genera i feed per tutti i negozi. Per generare solo un negozio specifico, aggiungi &id_shops=SHOPID all'URL. Il pannello Generazione Automatica mostra i comandi individuali per ogni negozio in una tabella quando hai più di un negozio.

L'URL di generazione è sicuro da usare in un comando cron anche se è accessibile pubblicamente?

Sì. L'URL attiva la generazione solo quando è presente il corretto fpf_secret_key. Senza di esso, l'endpoint termina immediatamente. La chiave non viene mostrata da nessuna parte nel tuo negozio.

Cosa succede se due esecuzioni cron si sovrappongono?

Il modulo rileva che una generazione è già in corso (tramite un file progress.json) e si rifiuta di avviarne una seconda fino a 30 secondi dopo l'ultima attività. Ciò impedisce feed duplicati o corrotti.

Funzionalità Correlate