Certamente um dos erros mais comuns que os desenvolvedores PHP enfrentam, principalmente em aplicações que processam grandes quantidades de dados, e dependendo da causa do problema nem sempre é simples resolver e pode se tornar uma gigantesca dor de cabeça.

Contudo, na maioria das vezes que você se depara com esse erro é porque está carregando mais na memória do que o PHP tem configurado para lidar com um processo, é ai que aparece o tal “Allowed Memory Size Exhausted“.

Se você não tem certeza de quanto é o limite definido para o seu PHP, ele é incluído na mensagem de erro, embora esteja em bytes, abaixo tem algumas conversões para que visualize melhor.

  • 8388608  8 MB
  • 16777216 16 MB
  • 33554432 32 MB
  • 67108864 64 MB
  • 134217728 128 MB
  • 268435456 256 MB
  • 536870912 512 MB
  • 1073741824 1 GB

Como resolver o meu problema?

A primeira ação a ser executada é aumentar o limite de memória da sua aplicação PHP, mas lembre-se que é uma resolução temporária do seu problema, a ideia é que você aumente a quantidade de memória o suficiente para rodar a aplicação e identificar o que está causando este uso excessivo de memória.

Após corrigir o problema abaixe o limite de memória para rodar apenas com o necessário, assim não fazendo uso desnecessário de memória RAM que poderia ser usada para requisições de outras aplicações.

Mas então, como fazer isto? Pois bem, há duas maneiras de se aumentar a memória RAM disponível para suas aplicações, abaixo você vai aprender os dois modos.

Edição via cPanel

1. Acesse a opção de configurações do PHP dentro do cPanel

2. Selecione o botão “Switch to PHP Options”

3. Nessa página serão listadas várias configurações do PHP, inclusive o limite de memória.

Aumentar o limite de memória com programação

1. Abra o seu código PHP, e bem no início após a abertura da tag “<?php” adicione a linha de código:

ini_set ('memory_limit', '128M') ; // Também pode ser usado 256M

Dessa forma você dá ao PHP memória extra apenas quando esse trecho de código é chamado, ao invés de aumentar o limite de memória para todos os processos.

Dica

Existe uma ferramenta muito útil para contar com essa e com muitas outras situações que é o Xdebug, ele ajuda a diagnosticar a quantidade de memória que é usada e em qual trecho do seu código grandes quantidades de memória são usadas.

Para mais informações acesse a documentação do PHP clicando aqui