Passa al contenuto principale

Opzioni di Generazione — Formato Output e cURL

La scheda Generation Options controlla come viene formattato il feed prodotti e come il modulo avvia il processo di generazione in background tramite cURL. La maggior parte dei negozi funziona correttamente con le impostazioni predefinite, ma questa scheda è il primo posto dove cercare quando si diagnosticano errori di generazione o si lavora intorno a restrizioni del server.

note

Disponibile dalla v2.0.0

Panoramica

Quando si salva e si genera il feed, il modulo effettua una richiesta HTTP interna (tramite cURL) all'URL di generazione del feed del negozio. Questa chiamata interna avvia la generazione vera e propria in background, in modo che il browser non vada in timeout mentre vengono elaborati migliaia di prodotti.

Le impostazioni di questa scheda consentono di:

  • Scegliere tra il formato di output RSS XML e ATOM XML
  • Controllare come cURL gestisce i timeout e i certificati SSL durante la chiamata interna
  • Abilitare un parametro di randomizzazione dell'URL che forza i sistemi di cache a servire dati aggiornati anziché una risposta memorizzata nella cache obsoleta

Queste sono impostazioni globali — si applicano a tutti i negozi in un'installazione multi-negozio.

Configurazione

Vai su Moduli > Gestione moduli > Facebook & Instagram Product Catalogue Feed Pro > Configura, quindi clicca sulla scheda Generation Options.

Scheda Generation Options con le impostazioni del formato output e cURL

Formato Output

CampoValoriPredefinitoDescrizione
Select the generation output formatRSS XML, ATOM XMLATOM XMLIl dialetto XML scritto nel file del feed

RSS XML è un formato più vecchio e più rigido, ampiamente supportato da tutte le piattaforme. ATOM XML (il predefinito) è un formato più recente e flessibile, preferito da alcuni fornitori — in particolare Google. Facebook e Instagram Commerce accettano entrambi. A meno che una piattaforma specifica non ti abbia indicato di usare RSS, mantieni il valore predefinito ATOM.

Nota sulle piattaforme: La maggior parte delle piattaforme accetta entrambi i formati, ma le preferenze variano. Google preferisce ATOM XML. Pinterest, invece, potrebbe preferire o richiedere RSS XML — consulta la documentazione attuale del feed catalogo di Pinterest se stai inviando un feed lì. Se invii lo stesso file di feed a più piattaforme, crea un URL feed separato per ciascuna e imposta il formato in base ai requisiti di ogni piattaforma.

Impostazioni cURL

CampoValoriPredefinitoDescrizione
Use Curl TimeoutAbilitato / DisabilitatoAbilitatoEsegue la generazione del feed come processo in background impostando un timeout cURL molto breve
Use Curl SSLAbilitato / DisabilitatoAbilitatoVerifica i certificati SSL sulla chiamata cURL interna

Use Curl Timeout è l'impostazione chiave che abilita la generazione in background. Quando abilitata, il modulo invia una richiesta cURL interna con un timeout di 1 secondo. La richiesta avvia il processo di generazione e poi si disconnette deliberatamente — la generazione continua a girare sul server senza tenere il browser in attesa. Se il feed smette di generarsi immediatamente con zero o pochissimi prodotti, questa è la prima impostazione da disabilitare.

Use Curl SSL controlla se la chiamata cURL interna valida il certificato SSL del negozio. Disabilitalo solo se nel log degli errori PHP compaiono errori relativi al certificato, oppure se stai eseguendo il modulo su un server di sviluppo con un certificato autofirmato.

Quando disabilitare Curl Timeout: Se il feed si blocca all'inizio e il log degli errori mostra un errore cURL o un messaggio di connessione rifiutata, disabilita questa opzione. La generazione verrà eseguita in modo sincrono all'interno della richiesta PHP anziché come processo in background scollegato.

Quando disabilitare Curl SSL: Disabilita solo se il server ha un certificato SSL mal configurato o autofirmato e compaiono errori di verifica SSL. Su un negozio in produzione con un certificato valido, mantienilo abilitato.

Impostazioni relative alla Cache

CampoValoriPredefinitoDescrizione
Generation RandomizationAbilitato / DisabilitatoDisabilitatoAggiunge un parametro casuale univoco a ogni chiamata all'URL di generazione

Quando Generation Randomization è abilitata, ogni richiesta cURL effettuata dal modulo — incluse le chiamate di continuazione del ciclo — aggiunge un parametro randomize con un valore univoco. La maggior parte dei reverse proxy (Varnish, Nginx microcaching, CDN edge cache) usa l'URL completo come chiave di cache. Senza questo parametro, potrebbe essere restituita una risposta memorizzata nella cache da una generazione precedente anziché attivare una nuova esecuzione di generazione.

Abilita questa impostazione se:

  • Il negozio si trova dietro un livello di caching (Varnish, Cloudflare, un CDN)
  • Sospetti che il feed non si aggiorni nonostante il cron venga eseguito correttamente
  • Il provider di hosting ha comunicato che gli URL dinamici vengono messi in cache

Come Funziona

Generazione in Background tramite cURL

Quando si avvia una generazione del feed (manualmente o tramite cron), il modulo chiama internamente il proprio URL di generazione tramite cURL. L'URL di generazione ha questo aspetto:

https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=...

Con Use Curl Timeout abilitato, il timeout di connessione è impostato a 1 secondo e il timeout totale è anch'esso di 1 secondo. Questo fa sì che la chiamata cURL "fallisca" immediatamente dal punto di vista del chiamante, ma il processo PHP sul server continua a girare e scrive il file del feed. Questa è la tecnica standard per le attività in background fire-and-forget negli ambienti PHP che non supportano processi in background veri e propri.

Con Use Curl Timeout disabilitato, la chiamata cURL attende il completamento della generazione prima di restituire il risultato. Questo è affidabile su server con valori max_execution_time generosi, ma bloccherà il browser o il chiamante cron per l'intera durata della generazione.

Formato URL Cron v2

Se hai eseguito un aggiornamento da una versione precedente alla 2.2.6, potresti vedere un avviso nel Back Office che indica che l'URL di generazione è cambiato. Il flag FPF_NEW_CORN_URL viene impostato durante l'aggiornamento per attivare un banner informativo una tantum che mostra il nuovo formato dell'URL cron utilizzando la route del modulo più pulita:

https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=...

Il vecchio formato usava un percorso diretto cron.php. Il nuovo formato è gestito dal livello di routing di PrestaShop e funziona in modo più affidabile su diverse configurazioni server. Una volta confermato l'avviso nel Back Office e aggiornato il cron job con il nuovo URL, il banner scompare. La scheda Automatic Generation (Cron Jobs) mostra sempre l'URL corretto aggiornato per il tuo negozio.

Parametro Casuale Durante la Continuazione del Ciclo

Quando la generazione basata su cicli è attiva (il catalogo è abbastanza grande da richiedere più cicli), ogni richiesta di continuazione include il parametro randomize quando Generation Randomization è abilitata. Questo garantisce che ogni chiamata di ciclo aggiri la cache in modo indipendente, non solo la prima richiesta. Senza questa impostazione, un livello di caching potrebbe intercettare una richiesta di continuazione, restituire una risposta memorizzata "generazione in corso" e interrompere silenziosamente il processo multi-ciclo.

Esempi d'Uso

Esempio: Il feed smette di generarsi con 0 prodotti su un hosting condiviso

Il feed genera 0 prodotti e la Dashboard mostra che l'ultima generazione è stata completata istantaneamente. Vai su Generation Options, imposta Use Curl Timeout su Disabilitato, salva e avvia una generazione manuale. Il modulo attenderà ora il completamento della generazione in modo sincrono. Una volta che la generazione funziona, verifica se l'host consente richieste PHP a lunga esecuzione e considera di configurare un cron job tramite CLI.

Esempio: Il feed non si aggiorna nonostante il cron venga eseguito

Il cron viene eseguito ogni ora ma i timestamp del feed non cambiano. Il negozio utilizza Varnish. Vai su Generation Options, abilita Generation Randomization, salva. La successiva esecuzione del cron aggiungerà un parametro univoco all'URL di generazione, aggirando la cache di Varnish e attivando una generazione reale.

Esempio: Certificato autofirmato su un server di staging

Stai testando il modulo su un server di staging interno con un certificato SSL autofirmato. Il feed non viene generato e il log degli errori mostra SSL certificate problem: unable to get local issuer certificate. Vai su Generation Options, disabilita Use Curl SSL, salva. La generazione riuscirà perché la chiamata cURL interna non validerà più il certificato.

Note Importanti

  • Tutte le impostazioni di questa scheda sono globali — si applicano a tutti i negozi in una configurazione multi-negozio. Non è possibile configurare un comportamento cURL diverso per negozio.
  • Generation Randomization legge dalla configurazione globale indipendentemente dal contesto del negozio corrente, perché si applica all'URL di generazione stesso, non ai dati dei prodotti.
  • Il breve timeout cURL (1 secondo) è intenzionale quando Use Curl Timeout è abilitato. Non interpretarlo come un errore — la generazione continua sul server dopo che la connessione viene interrotta.
  • Se esegui la generazione dalla riga di comando (cron CLI), le impostazioni cURL non si applicano. La generazione viene eseguita direttamente in PHP senza effettuare una richiesta HTTP interna.

Risoluzione dei Problemi

ProblemaSoluzione
Il feed si blocca a 0 prodotti immediatamenteDisabilita Use Curl Timeout e riprova. Se la generazione funziona senza di esso, il server non supporta le chiamate cURL fire-and-forget. Usa invece un cron job CLI.
Il cron con URL di generazione non si attivaAbilita Generation Randomization se il server utilizza il caching delle pagine. Verifica anche che la chiave segreta nell'URL del cron corrisponda a quella in Feed Protection.
Errore di certificato SSL nel log PHP durante la generazioneDisabilita Use Curl SSL. Questo è previsto su server di staging con certificati autofirmati.
Il banner indica "URL di generazione modificato" dopo l'aggiornamentoCopia il nuovo URL dalla scheda Automatic Generation (Cron Jobs) e aggiorna il cron job. Il banner scompare una volta confermato.
Il feed appare obsoleto nonostante frequenti esecuzioni del cronAbilita Generation Randomization per aggirare qualsiasi livello di caching davanti all'endpoint di generazione.

Domande Frequenti

Il feed viene generato correttamente quando clicco su 'Generate Feed Now' ma non dal cron job. Perché?

Il pulsante manuale avvia la generazione direttamente dalla sessione del browser, aggirando cURL. Il cron job usa l'URL di generazione, che passa attraverso cURL. Verifica che l'URL del cron contenga la chiave segreta corretta e prova ad abilitare Generation Randomization se è coinvolto un livello di cache.

Devo disabilitare Curl Timeout se il mio catalogo ha 50.000 prodotti?

No — per i cataloghi di grandi dimensioni dovresti mantenere Use Curl Timeout abilitato, perché consente alla generazione di girare in background su più cicli senza bloccarsi. Se la generazione si interrompe, il problema è di solito la configurazione del ciclo, non il timeout. Consulta la guida alla generazione basata su cicli.

Qual è la differenza tra RSS XML e ATOM XML per Facebook?

Per Facebook e Instagram Commerce, entrambi i formati funzionano ugualmente bene. ATOM XML è il valore predefinito consigliato perché è più flessibile e preferito da Google Shopping. Passa a RSS XML solo se uno strumento di importazione o una piattaforma specifica lo richiede esplicitamente.

Generation Randomization influenza l'URL del feed che Facebook usa per scaricare il catalogo?

No. Il parametro casuale viene aggiunto solo alla chiamata cURL interna che avvia la generazione sul server. L'URL del file di feed che Facebook recupera per leggere il catalogo è separato e non viene mai modificato da questa impostazione.

Ho disabilitato Curl SSL e la generazione funziona, ma è un rischio per la sicurezza?

È un rischio minore in produzione perché la chiamata cURL interna salta la validazione del certificato. Su un negozio attivo con un certificato SSL valido dovresti mantenere Use Curl SSL abilitato. Se hai dovuto disabilitarlo per un negozio in produzione, indaga il motivo per cui la catena di certificati è incompleta — la causa è di solito un certificato intermedio mancante sul server.

Funzionalità Correlate