O buffer de saĆda Ć© o buffer (armazenamento temporĆ”rio) da saĆda antes de ela ser descarregada (enviada e descartada) para o navegador (em um contexto da web) ou para o shell (na linha de comando). Enquanto o buffer de saĆda estiver ativo, nenhuma saĆda serĆ” enviada do script; em vez disso, a saĆda serĆ” armazenada em um buffer interno.
O PHP depende da infraestrutura de software/hardware subjacente ao descarregar a saĆda. O buffer implementado por consoles na linha de comando (por exemplo, buffer de linha) ou servidores web e navegador em um contexto web (por exemplo, totalmente bufferizado) afeta quando a saĆda Ć© exibida para o usuĆ”rio final. Alguns desses efeitos podem ser eliminados ajustando as configuraƧƵes do servidor e/ou alinhando os tamanhos dos buffers das diversas camadas.
O PHP fornece um buffer de saĆda em nĆvel de usuĆ”rio totalmente armazenado em buffer com funƧƵes para iniciar, manipular e desligar o buffer (a maioria das funƧƵes ob_*) e duas funƧƵes para descarregar os buffers subjacentes do sistema (flush() e ob_implicit_flush()). Algumas dessas funcionalidades podem ser definidas e/ou configuradas usando tambĆ©m as configuraƧƵes apropriadas do php.ini.
O buffer de saĆda geralmente Ć© Ćŗtil em situaƧƵes em que a saĆda armazenada em buffer Ć© modificada ou inspecionada ou Ć© usada mais de uma vez em uma solicitação; ou quando a descarga controlada da saĆda Ć© desejada. Os casos de uso especĆficos incluem:
Armazenar em cache o resultado de scripts com uso intensivo de tempo/computação,
por exemplo, gerando pƔginas HTML estƔticas.
Reutilizar a saĆda gerada exibindo-a, salvando-a em um arquivo e/ou enviando-a por e-mail.
Enviar a tag head de uma pƔgina HTML,
antes da tag body permite que os navegadores
carreguem recursos externos enquanto o script executa
processos potencialmente mais demorados
(por exemplo, acesso a banco de dados e arquivos, conexão de rede externa).
Isto só é útil se o código de status HTTP
não puder ser alterado após o envio dos cabeçalhos.
Extrair informaƧƵes de funƧƵes que de outra forma produziriam saĆda (por exemplo, phpinfo()).
Controlar a saĆda de código de terceiros modificando/usando partes
(por exemplo, extraindo dados, substituindo palavras/frases,
adicionando tags HTML ausentes)
ou descartando-o inteiramente sob certas condiƧƵes (por exemplo, erros).
Preenchendo certas funcionalidades indisponĆveis do servidor web (por exemplo, compactação ou codificação de saĆda)