Files
archived-doc-pt-br/reference/outcontrol/output-buffering.xml
2024-08-18 14:37:59 -03:00

114 lines
4.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?><!-- EN-Revision: 7ad99aeafea66a1562f668aa3cb11dcc9d9cb951 Maintainer: leonardolara Status: ready -->
<chapter xml:id="outcontrol.output-buffering" xmlns="http://docbook.org/ns/docbook">
<title>Buffer de Saída</title>
<para>
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.
</para>
<section>
<title>Buffer Afetando o PHP</title>
<para>
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.
</para>
</section>
<section>
<title>Controle de Buffer de Saída no PHP</title>
<para>
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 <link linkend="ref.outcontrol">ob_<replaceable>*</replaceable></link>)
e duas funções para descarregar os buffers subjacentes do sistema
(<function>flush</function> e <function>ob_implicit_flush</function>).
Algumas dessas funcionalidades podem ser definidas e/ou configuradas
usando também as configurações apropriadas do &php.ini;.
</para>
</section>
<section>
<title>Casos de Uso</title>
<para>
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:
<itemizedlist>
<listitem>
<simpara>
Armazenar em cache o resultado de scripts com uso intensivo de tempo/computação,
por exemplo, gerando páginas <literal>HTML</literal> estáticas.
</simpara>
</listitem>
<listitem>
<simpara>
Reutilizar a saída gerada exibindo-a, salvando-a em um arquivo
e/ou enviando-a por e-mail.
</simpara>
</listitem>
<listitem>
<simpara>
Enviar a tag <literal>head</literal> de uma página <literal>HTML</literal>,
antes da tag <literal>body</literal> 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 <literal>HTTP</literal>
não puder ser alterado após o envio dos cabeçalhos.
</simpara>
</listitem>
<listitem>
<simpara>
Extrair informações de funções que de outra forma produziriam saída
(por exemplo, <function>phpinfo</function>).
</simpara>
</listitem>
<listitem>
<simpara>
Controlar a saída de código de terceiros modificando/usando partes
(por exemplo, extraindo dados, substituindo palavras/frases,
adicionando tags <literal>HTML</literal> ausentes)
ou descartando-o inteiramente sob certas condições (por exemplo, erros).
</simpara>
</listitem>
<listitem>
<simpara>
Preenchendo certas funcionalidades indisponíveis do servidor web
(por exemplo, compactação ou codificação de saída)
</simpara>
</listitem>
</itemizedlist>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->