Sua lista de produtos carrega em uma página em branco. Uma importação falha na linha 4,300 e falha novamente na linha 4,300 na próxima tentativa. Uma foto é carregada sem problemas, mas nunca gera uma miniatura. Três pessoas relatam três problemas diferentes, e a causa subjacente a todos eles é a mesma.
A causa é a memória. Até que algo quebre, a maioria dos donos de lojas nunca verifica essa configuração e, quando ela quebra, a configuração acaba sendo culpada por diversos problemas que nunca causou.
O texto a seguir aborda como identificar problemas de limite de memória PHP no PrestaShop, como confirmar se esse é o problema e o que fazer em seguida. Algumas informações você pode verificar por conta própria; as demais devem ser enviadas ao seu provedor de hospedagem.
1.0 O que é, de fato, o limite de memória do PHP
O PrestaShop é escrito em PHP. Sempre que alguém carrega uma página, um script é executado para construí-la, e o parâmetro `memory_limit` limita a quantidade de memória que esse script pode usar.
Esse limite se aplica a um único script, não a todo o seu site nem a todo o seu servidor, e quase toda a confusão aqui se deve a essa distinção.
O manual do PHP menciona que o valor padrão de memory_limit é 128 MB.

Portanto, um servidor com 16 GB de RAM ainda pode falhar com 128 MB. Ninguém está mentindo sobre o hardware: o PHP impõe um limite próprio, muito abaixo do que a máquina permitiria, e interrompe o script assim que esse limite é atingido. Muita memória livre junto com uma mensagem de memória esgotada do PrestaShop é uma combinação comum, e um erro de memória esgotada do PHP no PrestaShop significa o mesmo.
Existem dois tetos, e o que estiver mais baixo é o que você atinge. Deixe as configurações do PHP como estão e adicione RAM: nada melhora. Daí a decepção quando "basta atualizar o plano de hospedagem" se mostra ineficaz.
2.0 Plano de hospedagem em relação ao limite de memória do servidor PrestaShop
Lado a lado, a diferença fica mais clara:
| O que é isso | O que isso limita | Valor típico | Quem o altera? |
| limite de memória do PHP | Carregamento de uma página | 128 MB a 512 MB | Você ou seu host, em um arquivo de configuração |
| RAM do servidor | Tudo funcionando | 2 GB a 32 GB | Seu plano de hospedagem |
Ambos os problemas são importantes, e a forma como ocorrem indica qual deles você tem. Se o limite de PHP for atingido, uma página quebra enquanto a loja continua atendendo os clientes. Se a memória RAM acabar, tudo fica lento de uma vez, incluindo o banco de dados. Um site lento aponta para problemas de RAM ou tráfego; uma página quebrada enquanto o restante funciona indica que o problema está neste artigo.
3.0 Por que a loja PrestaShop fica sem memória?
Existe uma resposta real para o motivo pelo qual o PrestaShop fica sem memória, e "o software está inchado" não é essa resposta. Administrar uma loja virtual envolve realizar diversas tarefas realmente pesadas que um site institucional jamais precisa executar. Quatro pontos importantes aqui.

- Os dados do produto são maiores do que aparentam.Cada produto traz consigo descrições em todos os idiomas em que você vende, além de regras de preços, categorias, combinações e estoque. Por si só, isso não é nada. Solicite cinco mil unidades de uma só vez durante uma exportação e os cálculos mudam rapidamente.
2. O consumo de memória das imagens é determinado pelas dimensões, não pelo tamanho do arquivo : Este fato surpreende muita gente. Abra uma foto de 3 MB com 6000 pixels de largura e ela precisará de aproximadamente 70 MB antes de qualquer redimensionamento. O tamanho do arquivo em disco dificilmente prevê o custo de processamento, e é por isso que algumas fotos recebem miniaturas enquanto outras não.
3. Todos os módulos são carregados juntos : Sua página de administração carrega e inicializa todos os módulos instalados ao entrar, incluindo os quarenta que a tela nunca acessará. Individualmente, eles custam pouco. Uma loja estabelecida utiliza sessenta módulos, e sessenta é uma questão diferente.
4. Seu painel administrativo é a parte mais pesada : mais dados na tela, menos atalhos, sem o cache que mantém a loja virtual rápida. Assim, um problema de memória PHP no PrestaShop recai sobre você e sua equipe, enquanto todos os clientes continuam navegando normalmente, tornando o problema invisível para quem paga pelo serviço.
4.0 Sintomas e mensagens de erro que vale a pena reconhecer
Ocasionalmente, a mensagem aparece na tela com a seguinte aparência:
Erro fatal: Tamanho de memória permitido de 134217728 bytes esgotado
(Tentativa de alocar 20480 bytes)
Analise os dois números separadamente. Convertendo de bytes, 134217728 resulta em 128 MB, o que significa que o armazenamento estava operando com o limite padrão e já havia utilizado toda a capacidade. É importante saber disso, pois a mensagem indica sua configuração atual.
Esse segundo número é uma pista falsa. É minúsculo, por isso parece ser o culpado, mas não é: trata-se do último recurso que solicitou memória, depois que tudo o mais já havia sido consumido. É a gota d'água, não a causa principal. A maioria dos donos de lojas rastreia erros de alocação de memória no PrestaShop encontrando esse número, e isso não os leva a lugar nenhum.
5.0 O erro de limite de memória do PrestaShop que você nunca vê.
Lojas online ocultam erros dos visitantes, e com razão. Qualquer aspecto técnico na sua loja virtual passa uma imagem pouco profissional e revela detalhes do seu servidor a estranhos. O efeito colateral recai sobre você: mesmo configurando a loja corretamente, você não verá nada de útil.

Erros ocultos dos visitantes não deixam nada para ler.
Em vez de uma mensagem, espere uma destas:
Uma página completamente branca, sem nada no navegador.
Uma página de erro HTTP 500
Meia página: a parte superior carrega, depois para com o layout quebrado.
Exportações que são baixadas e abertas corretamente, mas que apresentam linhas faltando no final.
Produtos que carregam sem problemas e nunca mostram uma miniatura.
A página em branco é clássica e a menos útil: nada para ler, nada para colar em uma caixa de pesquisa.
6.0 Garantindo que seja realmente memória
Confirme o diagnóstico antes que alguém altere alguma configuração. Vistos de fora, esses dois problemas parecem idênticos; a única diferença é que um deles envolve memória, e as soluções não têm nada em comum.
| O erro diz | O problema é | A solução envolve |
| Tamanho de memória disponível… esgotado | limite de memória do PHP | memory_limit, abordado abaixo |
| Tempo máximo de execução… excedido | Um limite de tempo, não de memória. | max_execution_time |
A página fica em branco de qualquer maneira. Peça ao seu provedor de hospedagem o log de erros do PHP referente ao horário em que o problema ocorreu, pois é lá que a mensagem real é exibida quando nada é mostrado. Uma única solicitação evita muitas tentativas e erros.
7.0 Como verificar o limite de memória PHP no PrestaShop
O limite atual de memória PHP pode ser verificado no próprio painel administrativo do PrestaShop, sem necessidade de acesso ao servidor.

Acesse Parâmetros Avançados e, em seguida , Informações , onde suas configurações de PHP estão listadas, incluindo o limite de memória. O limite de memória afeta tanto a loja quanto o painel de administração. Portanto, essa é a configuração que podemos verificar primeiro.
É importante evitar uma confusão. Feeds e importações geralmente são executados durante a noite, de acordo com um cronograma, e essas tarefas frequentemente utilizam uma configuração de memória diferente da do seu site. Você vê um valor normal no painel administrativo; mesmo assim, a importação falha. Mesmo servidor, configuração diferente. Informe isso ao seu provedor de hospedagem.
8.0 Como aumentar o limite de memória PHP no PrestaShop e corrigir erros de memória esgotada
Os requisitos de sistema do PrestaShop solicitam 256 MB como mínimo, e o instalador verifica isso antes de permitir que você prossiga.
Existem várias maneiras de aumentar o limite de memória PHP nas configurações do PrestaShop. A que se aplica ao seu caso depende da configuração da sua hospedagem, e isso não é algo que você possa determinar simplesmente navegando pela sua loja. Pergunte ou verifique.

8.1 O caminho mais fácil: pergunte ao seu anfitrião
Em hospedagem compartilhada, essa geralmente é a solução completa. Muitos painéis de controle oferecem uma tela de configurações do PHP que você mesmo pode alterar; caso contrário, o suporte técnico fará isso. Em outras palavras:
Você poderia aumentar o memory_limit para 256M no meu site?
O PrestaShop precisa de no mínimo 256 MB.
Se o provedor de hospedagem recusar, teremos que procurar outras opções de hospedagem.
8.2 Se você ou seu desenvolvedor tiverem acesso ao servidor
Uma pequena linha em um arquivo chamado php.ini resolve o problema:
memory_limit = 256M
Duas coisas dão errado com frequência suficiente para merecerem atenção. Um servidor pode conter vários arquivos php.ini e ler apenas um, então uma edição perfeitamente correta pode acabar em um arquivo que ninguém consulta. A segunda é a reinicialização: em muitas configurações, nada entra em vigor até que o PHP seja reiniciado.
8.4 O método .htaccess e por que ele frequentemente não faz nada
Pesquise online e você encontrará instruções para adicionar uma linha ao arquivo .htaccess, o arquivo de configuração localizado na pasta raiz da sua loja:
php_value memory_limit 256M
Às vezes funciona. Na maioria das hospedagens modernas, não faz nada, e em algumas, o site inteiro retorna um erro 500 porque o servidor rejeita essa instrução.
Use essa opção apenas como último recurso e somente se puder desfazer a alteração com facilidade.
Um detalhe peculiar desta plataforma é o seguinte: ao salvar as configurações de URL, o PrestaShop reescreve o arquivo .htaccess, o que significa que uma linha adicionada manualmente pode desaparecer sem aviso prévio. Verifique o arquivo novamente após alterar as configurações de SEO e URLs.
9.0 Verificando se a alteração realmente funcionou
Não acredite em ninguém, nem mesmo em você. A confirmação leva cerca de dois minutos:
Volte aos Parâmetros Avançados e, em seguida, às Informações. O número mudou? Se ainda estiver em 128 MB, significa que a alteração não surtiu efeito, o resultado mais comum.
Repita o que estava falhando antes. Se a configuração estiver definida como 256 MB e a página ainda apresentar problemas, algo mais está interferindo.
Limpe o cache do armazenamento em Parâmetros Avançados e, em seguida, em Desempenho.
Aguarde alguns dias antes de considerar o problema resolvido, pois o que retornar tende a ser proporcional ao tamanho do seu catálogo.
Quando um número se recusa a mudar, suspeite primeiro do arquivo errado e, em seguida, de um painel de controle que esteja sobrescrevendo as alterações feitas no disco com sua própria configuração.
9.2 Quando aumentar o limite é a resposta errada
Muitas vezes, essa é a resposta certa, já que 128 MB é realmente muito pouco para um painel administrativo moderno do PrestaShop. Use 256 MB sem se preocupar muito com isso.
Após 512 MB, comece a fazer uma pergunta diferente. Normalmente, a essa altura, algo está consumindo memória proporcionalmente ao seu catálogo, então cada aumento permite adicionar alguns milhares de produtos antes que o mesmo problema volte a ocorrer. Uma hora do tempo de um desenvolvedor custa menos do que um servidor maior por ano.

A forma como o problema começou pode ajudar a entender com qual situação estamos lidando. Algo que surgiu à medida que o catálogo crescia é um problema de código ou de dados disfarçado de problema de memória. Algo que começou no dia em que um módulo foi adicionado pertence a esse módulo. E um problema que sempre esteve presente, em uma loja que ainda tem 128 MB, é realmente apenas uma questão de configuração.
Conclusão final: Evite que isso aconteça novamente.
- Consiga 256 MB e mantenha-se nesse patamar. É o mínimo comprovado, não um luxo.
- Redimensione fotos grandes antes de publicá-las: a memória é gasta por pixel, e 2000 pixels de largura é suficiente para a maioria das lojas de imagens.
- Desativado não é o mesmo que removido, então desinstale o que você não usa mais.
- Agende grandes importações fora dos seus horários de pico.
- Ensaiar uma grande importação em uma cópia de teste, nunca na versão final em que o espetáculo está sendo apresentado ao vivo.
- Peça ao seu desenvolvedor para ler o log de erros após uma operação em lote falhar, em vez de presumir que ela funcionou corretamente.
- Essa última opção merece destaque. Uma operação em lote incompleta é pior do que uma que falhou completamente, porque você não tem ideia de qual metade foi concluída e ler o registro leva um minuto.
Este foi o guia completo para identificar problemas de limite de memória PHP no PrestaShop. Na Knowband, somos especialistas em plugins de e-commerce, personalização de sites e desenvolvimento de aplicativos para ajudar sua loja a ter o melhor desempenho. Precisa de ajuda especializada? Entre em contato conosco pelo e-mail [email protected] ou pelo Helpdesk da Knowband. Teremos prazer em ajudar.
