<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'session.customhandler.php',
    1 => 'Gestion personnalis&eacute;e des sessions',
    2 => 'Gestion personnalis&eacute;e des sessions',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Exemples',
  ),
  'prev' => 
  array (
    0 => 'session.idpassing.php',
    1 => 'Passer l\'identifiant de session (session ID)',
  ),
  'next' => 
  array (
    0 => 'session.upload-progress.php',
    1 => 'Progression d\'un t&eacute;l&eacute;versement (upload) en session',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Gestion personnalisée des sessions</h2>
  <p class="para">
   Pour implémenter un stockage en base de données, ou toute autre méthode,
   on aura besoin de la fonction <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> pour
   paramétrer ses propres fonctions de stockage.
   Un gestionnaire de session peut être créé en utilisant l&#039;interface
   <span class="classname"><a href="class.sessionhandlerinterface.php" class="classname">SessionHandlerInterface</a></span> ou en étendant les
   gestionnaires internes de PHP en héritant de la classe
   <span class="classname"><a href="class.sessionhandler.php" class="classname">SessionHandler</a></span>.
  </p>
  <p class="para">
   Les fonctions de rappel précisées dans <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> sont
   des méthodes appelées par PHP pendant le cycle de vie de la session: <code class="parameter">open</code>,
   <code class="parameter">read</code>, <code class="parameter">write</code> et <code class="parameter">close</code>
   ainsi que les fonctions de ménage <code class="parameter">destroy</code> pour supprimer une session
   et <code class="parameter">gc</code> pour une collecte périodique des gabarits.
  </p>
  <p class="para">
   Ainsi, PHP a toujours besoin d&#039;un gestionnaire de sessions. Par défaut il s&#039;agit du gestionnaire
   interne &#039;files&#039;. Un gestionnaire personnalisé peut être indiqué au moyen de
   <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span>. D&#039;autres gestionnaires alternatifs peuvent être proposés
   par des extensions PHP, comme <code class="parameter">sqlite</code>, <code class="parameter">memcache</code>
   et <code class="parameter">memcached</code> et peuvent être utilisés via
   <a href="session.configuration.php#ini.session.save-handler" class="link">session.save_handler</a>.
  </p>
  <p class="para">
   Lorsque la session démarre, PHP appelera en interne la fonction <code class="parameter">open</code> du gestionnaire, suivie de
   <code class="parameter">read</code> qui doit alors retourner une chaîne encodée exactement comme elle a été passée lors du stockage.
   Une fois que la fonction de rappel de <code class="parameter">read</code> a retourné sa chaîne, PHP va alors la décoder
   et peupler la super-globale <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> en conséquence.
  </p>
  <p class="para">
   Lorsque PHP se termine, (ou lorsque <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> est appelée), il va en
   interne encoder le contenu de <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> et le passer avec l&#039;ID de session à la
   fonction <code class="parameter">write</code>. Après <code class="parameter">write</code>, PHP invoquera <code class="parameter">close</code>.
  </p>
  <p class="para">
   Lorsqu&#039;une session est détruite, PHP appelera <code class="parameter">destroy</code> avec l&#039;ID de session.
  </p>
  <p class="para">
   PHP appelera la fonction de rappel <code class="parameter">gc</code> de temps en temps pour nettoyer
   les sessions expirées en fonction de leur
   temps de vie maximum. Cet appel devrait mener à la destruction des enregistrements dans
   le support de stockage qui n&#039;ont été accédés depuis <code class="parameter">$lifetime</code>.
  </p>
 </div><?php manual_footer($setup); ?>