<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/session.examples.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'session.customhandler.php',
    1 => 'Gesti&oacute;n personalizada de sesiones',
    2 => 'Gesti&oacute;n personalizada de sesiones',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Ejemplos',
  ),
  'prev' => 
  array (
    0 => 'session.idpassing.php',
    1 => 'Pasar el identificador de sesi&oacute;n (session ID)',
  ),
  'next' => 
  array (
    0 => 'session.upload-progress.php',
    1 => 'Progresi&oacute;n de una subida (upload) en sesi&oacute;n',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/session/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="session.customhandler" class="section">
  <h2 class="title">Gestión personalizada de sesiones</h2>
  <p class="para">
   Para implementar un almacenamiento en base de datos, u otro método,
   se necesitará la función <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> para
   configurar las propias funciones de almacenamiento.
   Un gestor de sesión puede crearse utilizando la interfaz
   <span class="classname"><a href="class.sessionhandlerinterface.php" class="classname">SessionHandlerInterface</a></span> o extendiendo los
   gestores internos de PHP heredando de la clase
   <span class="classname"><a href="class.sessionhandler.php" class="classname">SessionHandler</a></span>.
  </p>
  <p class="para">
   Las funciones de retrollamada especificadas en <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> son
   métodos llamados por PHP durante el ciclo de vida de la sesión: <code class="parameter">open</code>,
   <code class="parameter">read</code>, <code class="parameter">write</code> y <code class="parameter">close</code>
   así como las funciones de mantenimiento <code class="parameter">destroy</code> para eliminar una sesión
   y <code class="parameter">gc</code> para una recolección periódica de patrones.
  </p>
  <p class="para">
   Así, PHP siempre necesita un gestor de sesiones. Por omisión se trata del gestor
   interno &#039;files&#039;. Un gestor personalizado puede indicarse mediante
   <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span>. Otros gestores alternativos pueden ser propuestos
   por extensiones PHP, como <code class="parameter">sqlite</code>, <code class="parameter">memcache</code>
   y <code class="parameter">memcached</code> y pueden utilizarse mediante
   <a href="session.configuration.php#ini.session.save-handler" class="link">session.save_handler</a>.
  </p>
  <p class="para">
   Cuando la sesión comienza, PHP llamará internamente a la función <code class="parameter">open</code> del gestor, seguida de
   <code class="parameter">read</code> que debe entonces devolver una cadena codificada exactamente como fue pasada durante el almacenamiento.
   Una vez que la función de retrollamada de <code class="parameter">read</code> haya devuelto su cadena, PHP la decodificará
   y poblará la superglobal <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> en consecuencia.
  </p>
  <p class="para">
   Cuando PHP finaliza (o cuando <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> es llamada), codificará internamente el contenido de <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> y lo pasará con el ID de sesión a la
   función <code class="parameter">write</code>. Después de <code class="parameter">write</code>, PHP invocará <code class="parameter">close</code>.
  </p>
  <p class="para">
   Cuando una sesión es destruida, PHP llamará a <code class="parameter">destroy</code> con el ID de sesión.
  </p>
  <p class="para">
   PHP llamará a la función de retrollamada <code class="parameter">gc</code> de vez en cuando para limpiar
   las sesiones expiradas según su
   tiempo de vida máximo. Esta llamada debería llevar a la destrucción de los registros en
   el soporte de almacenamiento que no han sido accedidos desde <code class="parameter">$lifetime</code>.
  </p>
 </div><?php manual_footer($setup); ?>