<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.outcontrol.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'outcontrol.output-buffering.php',
    1 => 'Buffer de Sa&iacute;da',
    2 => 'Buffer de Sa&iacute;da',
  ),
  'up' => 
  array (
    0 => 'book.outcontrol.php',
    1 => 'Controle de Sa&iacute;da',
  ),
  'prev' => 
  array (
    0 => 'outcontrol.constants.php',
    1 => 'Constantes predefinidas',
  ),
  'next' => 
  array (
    0 => 'outcontrol.flushing-system-buffers.php',
    1 => 'Descarregando Buffers de Sistema',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/outcontrol/output-buffering.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="outcontrol.output-buffering" class="chapter">
 <h1 class="title">Buffer de Saída</h1>

 <p class="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.
 </p>

 <div class="section">
  <h2 class="title">Buffer Afetando o PHP</h2>
  <p class="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.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Controle de Buffer de Saída no PHP</h2>
  <p class="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 <a href="ref.outcontrol.php" class="link">ob_<span class="replaceable">*</span></a>)
   e duas funções para descarregar os buffers subjacentes do sistema
   (<span class="function"><a href="function.flush.php" class="function">flush()</a></span> e <span class="function"><a href="function.ob-implicit-flush.php" class="function">ob_implicit_flush()</a></span>).
   Algumas dessas funcionalidades podem ser definidas e/ou configuradas
   usando também as configurações apropriadas do <var class="filename">php.ini</var>.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Casos de Uso</h2>
  <p class="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:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Armazenar em cache o resultado de scripts com uso intensivo de tempo/computação,
      por exemplo, gerando páginas <code class="literal">HTML</code> estáticas.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Reutilizar a saída gerada exibindo-a, salvando-a em um arquivo
      e/ou enviando-a por e-mail.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Enviar a tag <code class="literal">head</code> de uma página <code class="literal">HTML</code>,
      antes da tag <code class="literal">body</code> 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 <code class="literal">HTTP</code>
      não puder ser alterado após o envio dos cabeçalhos.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Extrair informações de funções que de outra forma produziriam saída
      (por exemplo, <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Controlar a saída de código de terceiros modificando/usando partes
      (por exemplo, extraindo dados, substituindo palavras/frases,
      adicionando tags <code class="literal">HTML</code> ausentes)
      ou descartando-o inteiramente sob certas condições (por exemplo, erros).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Preenchendo certas funcionalidades indisponíveis do servidor web
      (por exemplo, compactação ou codificação de saída)
     </span>
    </li>
   </ul>
  </p>
 </div>

</div>
<?php manual_footer($setup); ?>