Il tuo elenco prodotti si carica su una pagina bianca vuota. Un'importazione si blocca alla riga 4,300, e si blocca di nuovo alla riga 4,300 al tentativo successivo. Una foto viene caricata senza problemi ma non genera mai un'anteprima. Tre persone segnalano tre problemi, e una sola causa è alla base di tutti.
La causa è la memoria. Finché qualcosa non si rompe, la maggior parte dei proprietari di negozi non controlla mai questa impostazione e, una volta che si rompe, l'impostazione viene incolpata di una serie di problemi che non ha causato.
Di seguito vengono illustrati i metodi per identificare i problemi di limite di memoria PHP in PrestaShop, come confermare che si tratti effettivamente di questo problema e quali azioni intraprendere. Alcuni controlli possono essere eseguiti autonomamente; per gli altri, si tratta di istruzioni da inviare al proprio provider di hosting.
1.0 Cos'è effettivamente il limite di memoria di PHP
PrestaShop è scritto in PHP. Ogni volta che qualcuno carica una pagina, viene eseguito uno script per generarla e memory_limit limita la quantità di memoria che tale script può utilizzare.
Tale limite si applica a un singolo script, non all'intero sito e non all'intero server, e quasi tutta la confusione che si crea in questo contesto deriva proprio da questa distinzione.
Il manuale di PHP indica che il valore predefinito di memory_limit è pari a 128 MB.

Quindi un server con 16 GB di RAM può comunque fallire a 128 MB. Nessuno mente sull'hardware: PHP impone un limite massimo, ben al di sotto di quello che la macchina consentirebbe, e interrompe lo script nel momento in cui viene raggiunto. Una grande quantità di memoria libera insieme a un messaggio di memoria esaurita di PrestaShop è una combinazione normale, e un errore di memoria esaurita di PHP in PrestaShop significa la stessa cosa.
Ci sono due limiti, e quello più basso è quello che si raggiunge. Lasciate invariate le configurazioni PHP e non aggiungete RAM: non migliora nulla. Da qui la delusione quando "basta aggiornare il piano di hosting" non risolve il problema.
2.0 Piano di hosting in base al limite di memoria del server PrestaShop
Affiancate, la differenza è più evidente:
| Cos'è | Ciò che limita | Valore tipico | Chi lo cambia? |
| Limite di memoria PHP | Caricamento di una pagina | Da 128 MB a 512 MB | Tu o il tuo host, in un file di configurazione |
| RAM del server | Tutto in funzione | Da 2 GB a 32 GB | Il tuo piano di hosting |
Entrambi i problemi sono importanti, e il modo in cui si verificano ti dice quale dei due hai. Se raggiungi il limite di PHP, una pagina smette di funzionare mentre il negozio continua a servire i clienti. Se la RAM si esaurisce, tutto rallenta all'improvviso, database incluso. Un sito lento indica un problema di RAM o di traffico; se una pagina non funziona mentre le altre sono operative, il problema è quello descritto in questo articolo.
3.0 Perché il negozio PrestaShop esaurisce la memoria
Esiste una vera e propria spiegazione al perché PrestaShop esaurisca la memoria, e "il software è troppo pesante" non è la risposta. Gestire un negozio online implica svolgere diverse operazioni davvero impegnative che un sito web vetrina non deve mai fare. Quattro sono i fattori principali.

- I dati di prodotto sono più numerosi di quanto sembri.Ogni prodotto si porta dietro descrizioni in tutte le lingue in cui vendi, oltre a regole di prezzo, categorie, combinazioni e scorte. Di per sé, non è niente. Richiedine cinquemila alla volta durante un'esportazione e i calcoli cambiano rapidamente.
2. Le immagini consumano memoria in base alle dimensioni, non alla dimensione del file : questo dato sorprende molti. Aprite una foto da 3 MB larga 6000 pixel e vedrete che occorrono circa 70 MB prima che inizi qualsiasi ridimensionamento. Il peso di un file sul disco non è un indicatore affidabile del costo di elaborazione, ed è per questo che alcune foto hanno miniature e altre no.
3. Tutti i moduli vengono caricati insieme : la tua pagina di amministrazione carica e inizializza tutti i moduli installati, compresi i quaranta che lo schermo non utilizzerà mai. Singolarmente costano poco. Un negozio affermato ne ha sessanta, e sessanta è tutta un'altra storia.
4. Il back office è la parte più pesante : più dati sullo schermo, meno scorciatoie, nessuna della cache che mantiene veloce un negozio online. Quindi un problema di memoria PHP di PrestaShop ricade su di te e sul tuo staff, mentre tutti i clienti continuano a navigare senza problemi, rendendolo invisibile a chi ti paga.
4.0 Sintomi e messaggi di errore da riconoscere
A volte il messaggio compare sullo schermo e ha questo aspetto:
Errore irreversibile: la memoria consentita di 134217728 byte è esaurita.
(tentativo di allocare 20480 byte)
Consideriamo i due numeri separatamente. Convertito da byte, 134217728 corrisponde a 128 MB, quindi quel negozio stava utilizzando il limite predefinito e lo aveva esaurito. È utile saperlo, dato che il messaggio riporta l'impostazione corrente.
Quel secondo numero è un depistaggio. È così piccolo da sembrare il colpevole, ma non lo è affatto: è semplicemente ciò che ha richiesto memoria per ultimo, dopo che tutto il resto era già stato utilizzato. È la goccia che fa traboccare il vaso, non la causa principale. La maggior parte dei proprietari di negozi online cerca di individuare un errore di allocazione della memoria in PrestaShop basandosi su quel numero, ma non li porta da nessuna parte.
5.0 L'errore di limite di memoria di PrestaShop che non vedrai mai
I negozi online nascondono gli errori ai visitatori, e giustamente. Qualsiasi informazione tecnica sulla vetrina del tuo negozio appare poco professionale e fornisce a un estraneo dettagli sul tuo server. La conseguenza è che, anche configurando correttamente il negozio, non visualizzi nulla di utile.

Gli errori nascosti ai visitatori non ti lasciano nulla da leggere
Invece di un messaggio, aspettati uno di questi:
Una pagina completamente bianca, niente di niente nel browser.
Una pagina di errore HTTP 500
Mezza pagina: la parte superiore si carica, poi si blocca con il layout interrotto
Esportazioni che si scaricano e si aprono correttamente ma mancano delle righe alla fine
Prodotti che si caricano correttamente e non mostrano mai un'anteprima
La pagina bianca è l'esempio classico, e anche il meno utile: niente da leggere, niente da incollare in una casella di ricerca.
6.0 Assicurarsi che sia effettivamente memoria
Confermate la diagnosi prima di modificare qualsiasi impostazione. Visti dall'esterno, questi due problemi sembrano identici, solo che uno riguarda la memoria e le loro soluzioni non hanno nulla in comune.
| L'errore dice | Il problema è | La soluzione prevede |
| Spazio di memoria consentito... esaurito | Limite di memoria PHP | limite_di_memoria, trattato di seguito |
| Tempo massimo di esecuzione… superato | Un limite di tempo, non la memoria | max_execution_time |
In entrambi i casi, la pagina rimane vuota. Chiedi al tuo provider di hosting il log degli errori PHP relativo al momento in cui si è verificato il problema, poiché è lì che viene visualizzato il messaggio di errore quando non viene mostrato nulla. Una sola richiesta, che ti risparmierà un sacco di tentativi a vuoto.
7.0 Come verificare il limite di memoria PHP in PrestaShop
Il limite di memoria PHP corrente può essere verificato direttamente nel back office di PrestaShop, senza bisogno di accedere al server.

Vai su Parametri avanzati , poi su Informazioni , dove sono elencate le impostazioni PHP, tra cui il limite di memoria. Il limite di memoria influisce sia sul negozio che sul pannello di amministrazione. Quindi, questa è l'impostazione che possiamo controllare per prima.
Un equivoco che vale la pena chiarire. I feed e le importazioni vengono solitamente eseguiti durante la notte secondo una pianificazione, e questi processi spesso dipendono da una configurazione di memoria diversa rispetto al tuo sito web. Potresti visualizzare un numero corretto nel back-office, ma l'importazione fallisce comunque. Stesso server, seconda configurazione. Segnalalo al tuo provider di hosting.
8.0 Come aumentare il limite di memoria PHP in PrestaShop e risolvere gli errori di esaurimento della memoria
I requisiti di sistema di PrestaShop richiedono un minimo di 256 MB di RAM e il programma di installazione effettua un controllo prima di consentire di procedere.
Esistono diversi modi per aumentare il limite di memoria PHP nelle impostazioni di PrestaShop. Quale sia il metodo più adatto dipende dalla configurazione del tuo hosting, e non è qualcosa che puoi determinare semplicemente navigando nel tuo negozio. Chiedi informazioni o verifica.

8.1 La soluzione più semplice: chiedi al tuo ospite
Su hosting condiviso, questa è solitamente la risposta completa. Molti pannelli di controllo offrono una schermata delle impostazioni PHP che puoi modificare autonomamente; in caso contrario, l'assistenza lo farà per te. Formulalo in questo modo:
Potresti aumentare il limite di memoria a 256 MB per il mio sito?
PrestaShop richiede un minimo di 256 MB.
Se il fornitore di hosting lo nega, dovremo valutare altre opzioni.
8.2 Se tu o il tuo sviluppatore avete accesso al server
Basta una breve riga in un file chiamato php.ini:
memory_limit = 256M
Ci sono due problemi che si verificano abbastanza spesso da meritare una segnalazione. Un server può contenere diversi file php.ini, ma ne legge solo uno; di conseguenza, una modifica perfettamente corretta può finire in un file che nessuno consulta. Il secondo problema riguarda il riavvio: in molte configurazioni, nessuna modifica ha effetto finché PHP non viene riavviato.
8.4 Il metodo .htaccess e perché spesso non funziona
Cercando online, ti verrà detto di aggiungere una riga al file .htaccess, il file di configurazione presente nella cartella principale del tuo negozio:
php_value memory_limit 256M
A volte funziona. Sulla maggior parte degli hosting moderni non succede nulla, e su alcuni l'intero sito restituisce un errore 500 perché il server rifiuta quell'istruzione.
Provate questa soluzione solo come ultima risorsa e solo se siete in grado di annullare facilmente la modifica.
Una particolarità di questa piattaforma è che, salvando le impostazioni degli URL, PrestaShop riscrive il file .htaccess, quindi una riga aggiunta manualmente potrebbe scomparire senza preavviso. Controlla nuovamente il file dopo aver modificato SEO e URL.
9.0 Verifica che la modifica abbia effettivamente funzionato
Non fidarti di nessuno, nemmeno della tua parola. Confermarlo richiede circa due minuti:
Torniamo a Parametri avanzati, poi a Informazioni. Il numero è cambiato? Se rimane 128 MB, significa che la modifica non ha avuto effetto, il che è di gran lunga il risultato più comune.
Ripeti l'operazione che prima non funzionava. Se l'impostazione è di 256 MB e la pagina continua a non funzionare, qualcos'altro la sta sovrascrivendo.
Cancella la cache del negozio da Parametri avanzati, quindi Prestazioni.
Aspetta qualche giorno prima di considerarlo risolto, perché qualsiasi cosa venga restituita tende a essere scalabile in base al tuo catalogo.
Quando un numero di telefono non si sposta, il primo sospetto è che il problema sia dovuto al file sbagliato, poi che il pannello di controllo stia sovrascrivendo la configurazione esistente con quella modificata sul disco.
9.2 Quando alzare il limite è la risposta sbagliata
Spesso è la risposta giusta, dato che 128 MB sono davvero troppo pochi per un moderno back office di PrestaShop. Passa a 256 MB senza pensarci due volte.
Superati i 512 MB, iniziate a porvi domande diverse. A quel punto, di solito, qualcosa sta consumando memoria in proporzione al vostro catalogo, quindi ogni incremento permette di aggiungere qualche migliaio di prodotti prima che si ripresenti lo stesso problema. Un'ora di lavoro di uno sviluppatore costa meno di un server più potente ogni anno.

Il modo in cui il problema è iniziato può aiutarci a capire di che situazione si tratta. Un problema che si è insinuato con la crescita del catalogo è un problema di codice o di dati mascherato da problema di memoria. Un problema iniziato il giorno in cui è stato installato un modulo appartiene a quel modulo. E un problema che era già presente, su un archivio ancora a 128 MB, è in realtà solo una questione di impostazioni.
Conclusione finale: impedire che accada di nuovo.
- Raggiungete i 256 MB e manteneteli. È il minimo documentato, non un lusso.
- Ridimensiona le foto di grandi dimensioni prima di pubblicarle: la memoria viene utilizzata per ogni pixel e una larghezza di 2000 pixel è adatta alla maggior parte dei negozi.
- Disabilitato non significa rimosso, quindi disinstalla ciò che non usi più.
- Programmate le importazioni più importanti al di fuori delle ore di punta.
- Prova un ordine di importazione di grandi dimensioni su una copia di prova, mai sul negozio reale durante la vendita.
- Chiedi al tuo sviluppatore di leggere il registro degli errori dopo che un'operazione in blocco non riesce, invece di dare per scontato che abbia funzionato.
- Quest'ultimo punto è meritato. Un'operazione di massa incompleta è peggiore di una fallita del tutto, perché non si ha idea di quale metà sia andata a buon fine e consultare il registro richiede tempo.
Questa era la guida completa per identificare i problemi di limite di memoria PHP in PrestaShop. Noi di Knowband siamo specializzati in plugin per l'e-commerce, personalizzazione di siti web e sviluppo di app per aiutare il tuo negozio a raggiungere le massime prestazioni. Hai bisogno di assistenza da esperti? Contattaci all'indirizzo [email protected] o tramite l'assistenza clienti di Knowband: saremo lieti di aiutarti.
