0Pricing
PHP Academy · Aula

Gerenciamento de memória e dicas de desempenho

Libere memória cedo, evite cópias de arrays grandes e use geradores para grandes conjuntos de dados.

Gerenciamento de memória e dicas de desempenho é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

Gerenciamento de memória do PHP

O PHP usa contagem de referências com um coletor de ciclos para a coleta de lixo. Cada solicitação começa com um heap novo — processos de longa duração (processos de trabalho, Horizon) podem acumular vazamentos de memória.

memory_limit

Defina um limite de memória adequado em php.ini. Ultrapassá-lo gera um erro fatal.

# php.ini:
memory_limit = 256M

// Check at runtime:
echo memory_get_usage(true)   / 1024 / 1024 . " MB";
echo memory_get_peak_usage(true) / 1024 / 1024 . " MB peak";

Liberando variáveis grandes

Libere a memória explicitamente quando matrizes ou objetos grandes não forem mais necessários dentro de uma função longa.

<?php
$data = loadLargeDataset();
processData($data);
unset($data); // free immediately, do not wait for end of scope
gc_collect_cycles(); // force garbage collection if circular references

Geradores para grandes conjuntos de dados

Use geradores para processar arquivos grandes ou resultados de consultas uma linha por vez, sem carregar tudo na memória.

<?php
function readCsvLines(string $file): Generator {
    $fh = fopen($file, "r");
    while (($line = fgetcsv($fh)) !== false) {
        yield $line;
    }
    fclose($fh);
}

foreach (readCsvLines("large.csv") as $row) {
    importRow($row);
}

Evitando cópias de matrizes grandes

O PHP usa cópia na escrita para matrizes. Atribuir uma matriz a uma variável não a copia até que uma delas seja modificada. Passe matrizes grandes por referência quando for necessário modificá-las.

<?php
function processArray(array &$data): void {
    // & avoids a copy when the parameter is modified
}

Concatenação de strings em laços

Construir uma string concatenando-a em um laço é ineficiente para strings muito grandes. Use uma matriz e implode().

<?php
// Slow for large N:
$str = "";
foreach ($items as $item) $str .= $item->format()."\n";

// Faster:
$parts = [];
foreach ($items as $item) $parts[] = $item->format();
$str = implode("\n", $parts);

Armazenamento em cache da criação de objetos

Instanciar objetos, especialmente com lógica no construtor, em laços muito frequentes é dispendioso. Armazene instâncias em cache ou use objetos leves compartilhados sempre que possível.

Evite chamadas repetidas de funções

Mova chamadas de funções cujo resultado é constante para fora dos laços quando o resultado não mudar a cada iteração.

<?php
// Slow:
for ($i = 0; $i < count($items); $i++) { ... }

// Fast (count() called once):
$n = count($items);
for ($i = 0; $i < $n; $i++) { ... }

Ajuste dos processos do PHP-FPM

Configure a quantidade de processos do PHP-FPM com base na memória disponível e na simultaneidade esperada. Uma regra aproximada é: processos = RAM / (uso médio de memória por processo).

OPcache e pré-carregamento

Ative o OPcache, abordado na lição anterior, e pré-carregue as classes do framework usadas com frequência. Isso elimina o custo de analisar e compilar o código a cada requisição.

Faça a análise primeiro

Sempre faça a análise de desempenho antes de otimizar. Micro-otimizações aplicadas a código que não é um gargalo desperdiçam tempo e reduzem a legibilidade. Use Xdebug ou Blackfire para encontrar o caminho realmente crítico.

Resumo

Use geradores para grandes conjuntos de dados. Libere as variáveis quando terminar de usá-las. Evite copiar matrizes grandes. Mova chamadas constantes para fora dos laços. Faça a análise com Xdebug para encontrar os gargalos reais antes de otimizar.

Verificação rápida

Qual é o principal benefício dos geradores do PHP para grandes conjuntos de dados?

Perguntas Frequentes

A aula “Gerenciamento de memória e dicas de desempenho” é grátis?

Sim — o texto completo de “Gerenciamento de memória e dicas de desempenho” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Gerenciamento de memória e dicas de desempenho”?

Libere memória cedo, evite cópias de arrays grandes e use geradores para grandes conjuntos de dados. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Gerenciamento de memória e dicas de desempenho”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Análise de desempenho do PHP com Xdebug
  2. OPcache: cache de bytecode
  3. Otimização de consultas ao banco de dados
  4. Gerenciamento de memória e dicas de desempenho
← Voltar para PHP Academy