W3docs

Função PHP ob_get_flush(): Tudo o Que Você Precisa Saber

Saiba como a função ob_get_flush() do PHP recupera o conteúdo do buffer de saída e o envia ao mesmo tempo, com exemplos práticos.

Como desenvolvedor PHP, talvez você precise recuperar o conteúdo do buffer de saída e liberá-lo ao mesmo tempo. A função ob_get_flush() é uma função nativa do PHP que faz as duas coisas em uma única chamada: ela retorna o conteúdo atual do buffer como uma string e o envia para o próximo nível de saída. Este artigo explica como ela funciona, o que retorna e quando utilizá-la em vez das outras funções de controle de saída.

O Que É a Função ob_get_flush()?

O buffering de saída permite que o PHP colete tudo o que você imprime com echo ou print na memória, em vez de enviar diretamente ao navegador. Você inicia um buffer com ob_start(), escreve normalmente e depois decide o que fazer com a saída capturada.

ob_get_flush() realiza três ações em um único passo:

  1. Obtém o conteúdo do buffer de saída ativo (o do topo) e o retorna como uma string.
  2. Libera esse conteúdo — envia-o para o próximo nível de buffer ou para o navegador, caso não exista outro nível.
  3. Fecha esse nível de buffer (um nível de aninhamento é removido).

Isso a torna uma combinação prática de ob_get_contents() (leitura) e ob_end_flush() (envio + fechamento).

Sintaxe

ob_get_flush(): string|false

Parâmetros

ob_get_flush() não aceita nenhum parâmetro.

Valor de Retorno

A função retorna o conteúdo do buffer de saída do topo como uma string. Se o buffering de saída não estiver ativo (não há buffer para liberar), ela retorna false e gera um aviso. Sempre inicie um buffer com ob_start() antes de chamá-la.

Como Usar a Função ob_get_flush()

O padrão é: iniciar um buffer, escrever nele e, em seguida, chamar ob_get_flush() para capturar e liberá-lo.

<?php

ob_start();
echo "This will be buffered";

// Capture the buffer, flush it to the browser, and close the level.
$output = ob_get_flush();

echo "\nCaptured copy: " . $output;

Saída:

This will be buffered
Captured copy: This will be buffered

Aqui, "This will be buffered" é coletado no buffer em vez de ser impresso imediatamente. ob_get_flush() retorna esse texto (para que $output agora o contenha) e, ao mesmo tempo, o envia ao navegador — é por isso que a frase aparece duas vezes: uma vez pelo flush e outra pelo echo final.

Se o buffering não estiver ativo quando você a chamar, você receberá false de volta:

<?php

$output = ob_get_flush(); // No ob_start() was called

var_dump($output); // bool(false)

ob_get_flush() vs. funções relacionadas

FunçãoRetorna o conteúdo?Envia para a saída?Fecha o buffer?
ob_get_flush()Sim (string)SimSim
ob_end_flush()Não (bool)SimSim
ob_get_clean()Sim (string)Não (descartado)Sim
ob_get_contents()Sim (string)NãoNão

Escolha ob_get_flush() quando quiser tanto manter uma cópia da saída armazenada em buffer (para registrar, inspecionar ou modificar) quanto ainda enviá-la ao navegador. Se precisar apenas enviá-la, use ob_end_flush(); se quiser capturá-la sem enviar, use ob_get_clean().

Conclusão

A função ob_get_flush() recupera o buffer de saída ativo como uma string enquanto o libera e fecha em uma única chamada. Ao entender sua lista de parâmetros vazia, seu valor de retorno string|false e seu comportamento de fechamento de buffer, você pode gerenciar fluxos de saída com mais precisão. Para se aprofundar, explore ob_start() para abrir buffers, ob_get_level() para verificar a profundidade de aninhamento e ob_flush() para liberar sem fechar.

Prática

Prática
Qual é a função de ob_get_flush() no PHP?
Qual é a função de ob_get_flush() no PHP?
Was this page helpful?