<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'outcontrol.output-buffering.php',
    1 => 'Bufferizaci&oacute;n de salida',
    2 => 'Bufferizaci&oacute;n de salida',
  ),
  'up' => 
  array (
    0 => 'book.outcontrol.php',
    1 => 'Control de la visualizaci&oacute;n',
  ),
  'prev' => 
  array (
    0 => 'outcontrol.constants.php',
    1 => 'Constantes predefinidas',
  ),
  'next' => 
  array (
    0 => 'outcontrol.flushing-system-buffers.php',
    1 => 'Vaciar los b&uacute;feres del sistema',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Bufferización de salida</h1>

 <p class="para">
  La bufferización de salida es el almacenamiento en búfer (temporal) de la salida
  antes de que sea volcada (enviada y eliminada) al navegador (en un contexto web)
  o al shell (en línea de comandos).
  Mientras la bufferización de salida esté activa, ninguna salida es enviada por el script,
  en su lugar, la salida es almacenada en un búfer interno.
 </p>

 <div class="section">
  <h2 class="title">Efectos de la bufferización en PHP</h2>
  <p class="para">
   PHP depende de la infraestructura lógica/material subyacente
   al vaciar el búfer de la salida.
   La bufferización implementada por las consolas en línea de comandos (por ejemplo, en modo línea)
   o los servidores web y los navegadores en un contexto web (por ejemplo, completamente bufferizado)
   afectan cuándo se muestra la salida al usuario final.
   Algunos de estos efectos pueden ser eliminados ajustando finamente los parámetros del servidor
   y/o alineando los tamaños de los búferes de las diferentes capas.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Control de la bufferización de salida en PHP</h2>
  <p class="para">
   PHP proporciona un búfer de salida de usuario completamente bufferizado
   con funciones para iniciar, manipular y desactivar el búfer
   (la mayoría de las funciones <a href="ref.outcontrol.php" class="link">ob_<span class="replaceable">*</span></a>),
   y dos funciones para vaciar los búferes del sistema subyacentes
   (<span class="function"><a href="function.flush.php" class="function">flush()</a></span> y <span class="function"><a href="function.ob-implicit-flush.php" class="function">ob_implicit_flush()</a></span>).
   Algunas de estas funcionalidades pueden ser definidas y/o configuradas
   utilizando los parámetros <var class="filename">php.ini</var> apropiados.
  </p>
 </div>

 <div class="section">
  <h2 class="title">Casos de uso</h2>
  <p class="para">
   La bufferización de salida es generalmente útil en situaciones donde la salida bufferizada
   es modificada o inspeccionada, o es utilizada más de una vez en una petición;
   o cuando se desea el vaciado controlado del búfer de la salida.
   Los casos de uso específicos incluyen:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      almacenar en caché el resultado de scripts de cálculo/tiempo intensivos
      por ejemplo generando páginas <code class="literal">HTML</code> estáticas
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      reutilizar la salida generada al mostrarla, guardarla en un fichero
      y/o enviarla por correo electrónico
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      vaciar la <code class="literal">head</code> de una página <code class="literal">HTML</code>
      separada del <code class="literal">body</code> permite a los navegadores
      cargar recursos externos mientras el script ejecuta
      procesos potencialmente más largos
      (por ejemplo, acceso a una base de datos/fichero, conexión de red externa).
      Esto es útil únicamente si el código de estado <code class="literal">HTTP</code>
      no puede cambiar después del envío de las cabeceras
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      extraer información de funciones que producirían de otro modo una salida
      (por ejemplo <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span>)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      controlar la salida de código de terceros al modificar/utilizar partes
      (por ejemplo, extraer datos, reemplazar palabras/frases,
      añadir etiquetas <code class="literal">HTML</code> faltantes),
      o al eliminarla completamente bajo ciertas condiciones (por ejemplo, errores)
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Polyfiller ciertas funcionalidades de servidor web no disponibles
      (por ejemplo, comprimir o codificar la salida)
     </span>
    </li>
   </ul>
  </p>
 </div>

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