<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'session.customhandler.php',
    1 => 'Individuelle Session-Routinen',
    2 => 'Individuelle Session-Routinen',
  ),
  'up' => 
  array (
    0 => 'session.examples.php',
    1 => 'Beispiele',
  ),
  'prev' => 
  array (
    0 => 'session.idpassing.php',
    1 => '&Uuml;bermittlung der Session-ID',
  ),
  'next' => 
  array (
    0 => 'session.upload-progress.php',
    1 => 'Fortschritt eines Uploads in einer Session',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    '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">Individuelle Session-Routinen</h2>
  <p class="para">
   Wenn die Speicherung in einer Datenbank oder irgendeine andere Art der
   Speicherung implementiert werden soll, kann
   <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> verwendet werden, um eine
   Reihe benutzerdefinierte Speicherfunktionen zu erstellen. Mit dem
   <span class="classname"><a href="class.sessionhandlerinterface.php" class="classname">SessionHandlerInterface</a></span> können Session-Routinen
   erstellt werden oder PHP-interne Routinen durch Beerbung von
   <span class="classname"><a href="class.sessionhandler.php" class="classname">SessionHandler</a></span> erweitert werden.
  </p>
  <p class="para">
   Die in <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span> definierten
   Callback-Funktionen sind Methoden, die von PHP während des Lebenszyklus
   einer Session aufgerufen werden: <code class="parameter">open</code>,
   <code class="parameter">read</code>, <code class="parameter">write</code> und
   <code class="parameter">close</code> und für Verwaltungsaufgaben:
   <code class="parameter">destroy</code> um eine Session zu löschen und
   <code class="parameter">gc</code> für die regelmäßige Speicherbereinigung.
  </p>
  <p class="para">
   Deshalb benötigt PHP immer Session-Speicherroutinen. Der Standard ist
   normalerweise die interne &#039;files&#039;-Speicherroutine. Eine benutzerdefinierte
   Speicherroutine kann mittels <span class="function"><a href="function.session-set-save-handler.php" class="function">session_set_save_handler()</a></span>
   erstellt werden. Alternative interne Speicherroutinen werden auch von
   PHP-Erweiterungen, z. B. <code class="parameter">sqlite</code>,
   <code class="parameter">memcache</code> und <code class="parameter">memcached</code> zur
   Verfügung gestellt und können mittels
   <a href="session.configuration.php#ini.session.save-handler" class="link">session.save_handler</a>
   festgelegt werden.
  </p>
  <p class="para">
   Wenn die Session beginnt, ruft PHP intern die
   <code class="parameter">open</code>-Routine, gefolgt vom
   <code class="parameter">read</code>-Callback auf, der eine verschlüsselte
   Zeichenkette genau so zurückgeben sollte, wie sie ursprünglich für die
   Speicherung übergeben wurde. Nachdem der
   <code class="parameter">read</code>-Callback die verschlüsselte Zeichenkette
   zurückgegeben hat, wird sie von PHP entschlüsselt und die Superglobale
   <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> mit dem resultierenden Array gefüllt.
  </p>
  <p class="para">
   Wenn das PHP-Skript endet (oder wenn
   <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> aufgerufen wird), wird die
   Superglobale <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> intern verschlüsselt und zusammen
   mit der Session-ID an den <code class="parameter">write</code>-Callback übergeben.
   Nach dem <code class="parameter">write</code>-Callback ruft PHP intern den
   <code class="parameter">close</code>-Callback auf.
  </p>
  <p class="para">
   Wenn eine Session gelöscht werden soll, ruft PHP die
   <code class="parameter">destroy</code>-Routine mit der Session-ID auf.
  </p>
  <p class="para">
   Von Zeit zu Zeit ruft PHP den <code class="parameter">gc</code>-Callback auf, um
   Sessions zu löschen, die entsprechend ihrer eingestellten maximalen
   Lebensdauer abgelaufen sind. Diese Routine sollte alle gespeicherten
   Datensätze löschen, auf die länger als die in
   <code class="parameter">$lifetime</code> festgelegte Zeitspanne nicht mehr
   zugegriffen wurde.
  </p>
 </div><?php manual_footer($setup); ?>