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