Visser Labs – Plugin WooCommerce

  1. Casa
  2. Knowledge Base
  3. WooCommerce Store Exporter Deluxe
  4. Problemi comuni di esportazione
  5. Come esportare grandi negozi WooCommerce con Store Exporter Deluxe

Come esportare grandi negozi WooCommerce con Store Exporter Deluxe

Se il tuo negozio ha migliaia di prodotti, ordini o clienti, un'esportazione che funziona bene su un catalogo piccolo può improvvisamente bloccarsi, andare in timeout o terminare senza alcun file su uno più grande. Raramente è un difetto di Store Exporter Deluxe stesso. È quasi sempre il tuo server che esaurisce la memoria PHP o il tempo di esecuzione consentito per una singola richiesta.

Quick Export divide già ogni esportazione in batch, quindi non cerca di elaborare l'intero catalogo in una sola volta. Tuttavia, un negozio abbastanza grande può aver bisogno di un po' più di margine PHP, ed è utile sapere dove cercare quando un'esportazione non viene completata. Questo articolo spiega come funziona il batching, quali impostazioni PHP sono più importanti e come utilizzare il registro di controllo e i log di WooCommerce per scoprire perché un'esportazione si è interrotta.

Prerequisiti

RequisitoDettagli
PluginStore Exporter Deluxe è attivo e con licenza
WooCommerceAttivo, poiché le esportazioni estraggono i loro dati dal tuo negozio WooCommerce
Accesso all'hostingPossibilità di modificare memory_limit e max_execution_time di PHP, o un host che puoi chiedere di aumentarli
Accesso amministrativoUn account con accesso alla dashboard di amministrazione di WordPress

Come funziona il batching

Quick Export non carica mai l'intero catalogo in memoria contemporaneamente. Invece, divide i record che stai esportando in batch di 100 per impostazione predefinita, quindi elabora un batch per richiesta. Quindi un'esportazione di 5.000 prodotti viene eseguita come 50 batch separati invece di un'unica enorme query, il che mantiene l'utilizzo della memoria prevedibile, indipendentemente da quanto cresce il tuo negozio. Il progresso di ogni batch viene salvato al suo completamento, quindi se stai osservando l'esecuzione di un Quick Export, la barra di avanzamento che vedi aumenta un batch alla volta invece di attendere il completamento dell'intera esportazione prima di mostrare qualcosa. Le Esportazioni Pianificate funzionano in modo diverso. Vedi Le esportazioni pianificate non sono una soluzione per errori di memoria o limiti di tempo di seguito.

Quick Export: Ogni batch di Quick Export è una richiesta a sé stante e ogni batch viene eseguito sotto il memory_limit e max_execution_time PHP normali del tuo server. Il plugin non aumenta questi limiti per un batch e l'impostazione Script Timeout non li modifica. Quindi, per Quick Export, le due cose che aiutano sono una Dimensione Batch più piccola (sotto) e limiti PHP più alti sul tuo host. Se le esportazioni si interrompono con errori di memoria, o si interrompono costantemente dopo circa la stessa quantità di tempo, chiedi al tuo host di aumentare memory_limit e max_execution_time nella configurazione PHP del tuo server.

Esportazioni Pianificate: Quando un'esportazione pianificata si avvia, Store Exporter Deluxe chiede a PHP di aumentare il suo limite di memoria a WP_MAX_MEMORY_LIMIT del tuo sito e applica l'impostazione Script Timeout come limite di tempo di esecuzione. WordPress imposta WP_MAX_MEMORY_LIMIT a 256 MB per impostazione predefinita, ben al di sopra del minimo del plugin di 64 MB. Detto questo, molti host bloccano queste sovrascritture in tempo reale e impongono i propri limiti rigidi indipendentemente da ciò che richiede il plugin. Se un'esportazione pianificata di grandi dimensioni si interrompe ancora, chiedi al tuo host di aumentare memory_limit e max_execution_time direttamente nella configurazione PHP del tuo server.

Script Timeout: Controlla Impostazioni → Generali → Script Timeout prima di un'esportazione pianificata di grandi dimensioni. Viene fornito come Illimitato. Se è stato modificato in 10 minuti, 30 minuti o 1 ora, un'esportazione pianificata che dura più a lungo si interrompe al raggiungimento di quel limite. Reimpostalo su Illimitato prima di eseguire un'esportazione pianificata di grandi dimensioni. Questa impostazione non influisce sui batch di Esportazione Rapida.

Per l'Esportazione Rapida, ridurre la dimensione del batch (sotto) è l'impostazione principale che controlli. Un batch più piccolo richiede meno memoria e tempo per richiesta, il che spesso consente a un'esportazione di grandi dimensioni di completarsi anche su un server con limitazioni rigide.

Regolazione della dimensione del batch per esportazioni molto grandi

  1. Apri WooCommerce → Store Export dal menu di amministrazione di WordPress.
  2. Fai clic su Esportazione Rapida nella barra laterale.
  3. Nella fase Seleziona Tipo di Esportazione, scegli cosa desideri esportare.
  4. Continua attraverso Campi di Esportazione (e Filtri e Ordinamento, se appare per quel tipo) per raggiungere la fase Opzioni di Esportazione.
  5. Sotto Impostazioni Batch, inserisci un numero nel campo Dimensione Batch. È vuoto per impostazione predefinita, il che utilizza il valore integrato del plugin di 100 record per batch.

Ridurre la Dimensione Batch (ad esempio, a 25 o 50) rende ogni singola richiesta di batch più leggera in termini di memoria e più veloce da completare, il che aiuta su un server con un basso memory_limit o max_execution_time. Il compromesso è un numero maggiore di batch complessivi, quindi l'esportazione completa richiede più richieste per essere completata. Non esiste un minimo fisso, quindi vale la pena testare un valore più piccolo se le tue esportazioni di dimensioni predefinite sono quelle che vanno in timeout.

Il passaggio Opzioni di esportazione dell'esportazione rapida che mostra la sezione Impostazioni batch, con il campo Dimensione batch impostato su 25

Utilizzo del Registro di Controllo per verificare un'esportazione di grandi dimensioni

Store Exporter Deluxe tiene traccia di ogni esecuzione di esportazione nel suo Registro di Controllo, disponibile dalla barra laterale sotto WooCommerce → Esportazione Negozio. Ogni voce mostra il tipo di esportazione, cosa l'ha innescata, il suo stato e i timestamp.

La pagina Registro di controllo che elenca le recenti esecuzioni di esportazione con le relative colonne tipo, trigger, stato, livello e durata

Fai clic su una voce per espanderla. Se l'esecuzione mostra Fallito, la vista espansa include il messaggio di errore.

Una voce del Registro di controllo espansa con lo stato Fallito, che mostra la casella Errore con il messaggio di errore

Un errore di memoria o di limite di tempo funziona in modo diverso. Quando PHP esaurisce la memoria o il tempo, interrompe l'esportazione immediatamente, prima che il plugin possa registrare qualcosa. La voce rimane quindi su In esecuzione senza alcun messaggio di errore. Per confermare cosa è successo, vai su WooCommerce → Stato → Log e cerca un log con origine errori-fatali, o chiedi al tuo host il log degli errori PHP.

Il registro di controllo è attivato per impostazione predefinita. Se manca nella barra laterale, qualcuno ha disattivato l'interruttore Attiva registro di controllo in Impostazioni → Registro di controllo.

La stessa sezione Impostazioni → Registro di controllo controlla anche quanti dettagli cattura ogni voce, impostato separatamente per Esportazioni rapide e Esportazioni pianificate. Il livello predefinito Standard registra già la Durata. Passa un'origine a Dettagliato per catturare anche l'Utilizzo massimo della memoria.

Il livello di registro delle Esportazioni rapide impostato su Dettagliato

Vale la pena attivare questa opzione mentre si ottimizza una grande esportazione, poiché indica quanto ogni esecuzione completata si è avvicinata al proprio memory_limit e quanto tempo ha impiegato. Ciò mostra quanto margine rimane prima che un'esportazione più grande raggiunga il limite.

L'elenco dei campi del livello Dettagliato che mostra le caselle di controllo Durata e Utilizzo massimo della memoria abilitate

L'esportazione pianificata non è una soluzione per errori di memoria o di limite di tempo

Un'esportazione pianificata non raggruppa i record come fa l'esportazione rapida. Elabora l'intero set di dati come un singolo processo in background tramite Action Scheduler. Il plugin richiede più memoria a PHP e applica Timeout script all'avvio dell'esecuzione, ma se il tuo host blocca tali sovrascritture, il processo viene comunque eseguito entro i limiti del tuo host. Come singolo processo non raggruppato, in genere richiede *più* memoria di un'esportazione rapida raggruppata, non meno. Non esiste un campo Dimensione batch nel modulo Esportazione pianificata perché non c'è nulla da raggruppare.

Ciò che un'esportazione pianificata evita è la dipendenza dalla scheda del browser: poiché viene eseguita come processo in background, non è legata alla scheda del browser che rimane aperta o a quanto tempo è consentita un'richiesta di pagina nel tuo browser. Se un'esportazione rapida si blocca perché non riesci a mantenere la scheda aperta abbastanza a lungo, un'esportazione pianificata risolve quel problema specifico. Se si blocca per memoria o tempo di esecuzione, riduci invece la Dimensione batch o aumenta i limiti PHP. Per istruzioni dettagliate, vedi Come pianificare le esportazioni in Store Exporter Deluxe.

Risoluzione dei problemi

Un'esportazione rapida si blocca o non finisce mai
Controlla prima la voce del Registro di controllo per quella esecuzione. Se mostra ancora In esecuzione molto tempo dopo l'arresto dell'esportazione, sono successe due cose. PHP ha raggiunto il limite di memoria o di tempo (vedi Un'esportazione fallisce con un errore del server di seguito per confermare), oppure la scheda del browser ha perso la connessione a metà. Dopo un arresto come questo, il plugin tratta ancora l'esportazione come in esecuzione per un massimo di 30 minuti, quindi una nuova Esportazione rapida mostra “Un'esportazione è già in esecuzione”. Prima di riprovare, vai su Impostazioni → Avanzate, trova Cancella transitorio esportazione sotto Manutenzione e fai clic su Cancella. Quindi riprova con una Dimensione batch più piccola e tieni la scheda aperta e attiva finché l'esportazione non è completata anziché allontanartene per un periodo prolungato.
Un'esportazione fallisce con un errore del server
Un errore del server durante un'esportazione di grandi dimensioni di solito significa che PHP ha raggiunto il suo memory_limit o max_execution_time a metà batch. In tal caso, la voce corrispondente del Registro di controllo rimane su In esecuzione senza messaggio di errore, poiché PHP si interrompe prima che il plugin possa registrarne uno. Per confermare, vai su WooCommerce → Stato → Log e apri il log con origine errori-fatali, o chiedi al tuo host il log degli errori PHP. Una riga che inizia con “Allowed memory size of” o “Maximum execution time of” lo conferma. Se la voce mostra Fallito invece, espandila per leggere il messaggio di errore.

Se si trattava di un'esportazione rapida, prima di riprovare, vai su Impostazioni → Avanzate, trova Cancella transitorio esportazione sotto Manutenzione e fai clic su Cancella. Se salti questo passaggio, la successiva esportazione rapida mostrerà “Un'esportazione è già in esecuzione.” per un massimo di 30 minuti. Quindi riduci la Dimensione batch e riprova. Ogni batch viene eseguito entro i limiti PHP del tuo server, quindi chiedi al tuo host di aumentare entrambe le impostazioni PHP se il problema persiste. Se ciò accade con un'esportazione pianificata, controlla anche che Impostazioni → Generali → Timeout script sia impostato su Illimitato.
Un catalogo di grandi dimensioni va ancora in timeout con una piccola dimensione batch
Un'esportazione pianificata non aiuterà qui, poiché esegue l'intera esportazione come un unico lavoro non batch e richiede più memoria e tempo rispetto all'esportazione rapida, non meno. Fai clic su Cancella accanto a Cancella transitorio esportazione (Impostazioni → Avanzate, sotto Manutenzione) come descritto sopra, quindi riduci ulteriormente la Dimensione batch. Ogni batch viene eseguito entro i limiti PHP del tuo server, quindi se l'esportazione non riesce ancora a completarsi, chiedi al tuo host di aumentare direttamente sul server memory_limit e max_execution_time.

FAQ

Qual è una buona dimensione batch da cui iniziare per un negozio di grandi dimensioni?
Non esiste un numero giusto univoco, poiché dipende dai limiti di memoria e tempo del tuo server. Inizia con il valore predefinito di 100. Se le esportazioni vanno in timeout, prova 50, poi 25, finché non trovi una dimensione che si completi in modo coerente.
Una dimensione batch più piccola rallenta l'intera esportazione?
Può aggiungere una piccola quantità di overhead, poiché più batch significano più richieste individuali. Ma una dimensione batch più piccola che si completa effettivamente è più veloce in pratica di una più grande che va in timeout e deve essere riavviata.
Un'esportazione pianificata eviterà completamente i timeout?
No. Rimuove la dipendenza dalla scheda del browser che ha un'esportazione rapida, ma viene eseguita come un singolo processo non suddiviso in batch. Se il tuo host blocca le sovrascritture di memoria e tempo del plugin, il processo deve comunque completarsi entro memory_limit e max_execution_time del tuo host, senza alcuna impostazione di Dimensione batch a cui fare affidamento. Un'esportazione pianificata potrebbe effettivamente avere maggiori probabilità di andare in timeout su un catalogo molto grande rispetto a un'esportazione rapida con una dimensione batch ridotta.

Serve ulteriore aiuto?

Se stai usando Store Exporter Deluxe e un'esportazione di grandi dimensioni non viene ancora completata dopo aver provato i passaggi precedenti, apri un ticket di supporto e il nostro team ti aiuterà a farlo funzionare.

Se stai utilizzando il plugin gratuito Store Exporter, chiedi sul forum di supporto di WordPress.org e il nostro team ti risponderà lì.

Questo articolo è stato utile?

Articoli Correlati

Risorse e Aiuto