<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.session.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.session-gc.php',
    1 => 'session_gc',
    2 => 'F&uuml;hrt die Garbage Collection der Session-Daten durch',
  ),
  'up' => 
  array (
    0 => 'ref.session.php',
    1 => 'Session-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.session-encode.php',
    1 => 'session_encode',
  ),
  'next' => 
  array (
    0 => 'function.session-get-cookie-params.php',
    1 => 'session_get_cookie_params',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/session/functions/session-gc.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.session-gc" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">session_gc</h1>
  <p class="verinfo">(PHP 7 &gt;= 7.1.0, PHP 8)</p><p class="refpurpose"><span class="refname">session_gc</span> &mdash; <span class="dc-title">Führt die Garbage Collection der Session-Daten durch</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.session-gc-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>session_gc</strong></span>(): <span class="type"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>session_gc()</strong></span> wird verwendet, um die GC (Garbage
   Collection) der Session-Daten durchzuführen. PHP führt standardmäßig eine
   wahrscheinlichkeitsbasierte Session-GC durch.
  </p>
  <p class="para">
   Die wahrscheinlichkeitsbasierte GC funktioniert einigermaßen, bringt aber
   einige Probleme mit sich. 1) Die Session-Daten von Websites mit geringem
   Datenverkehr werden möglicherweise nicht innerhalb der gewünschten Frist
   gelöscht. 2) Bei Websites mit hohem Datenverkehr kann die GC zu häufig
   erfolgen. 3) Die GC wird durchgeführt, während eine Anfrage des Benutzers
   bearbeitet wird, was zu einer zusätzlichen Verzögerung für den Benutzer
   führt.
  </p>
  <p class="para">
   Daher wird empfohlen, die GC auf Produktivsystemen regelmäßig auszuführen,
   bei UNIX-ähnlichen Systemen z. B. mit &quot;cron&quot;. Es ist sicherzustellen, dass
   die wahrscheinlichkeitsbasierte GC deaktiviert ist, indem
   <a href="session.configuration.php#ini.session.gc-probability" class="link">session.gc_probability</a>
   auf 0 gesetzt wird.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.session-gc-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">Diese Funktion besitzt keine Parameter.</p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.session-gc-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   <span class="function"><strong>session_gc()</strong></span> gibt bei Erfolg die Anzahl der gelöschten
   Session-Daten zurück. Bei einem Fehler wird <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgegeben.
  </p>
  <p class="para">
   Alte Speicherverfahren geben nicht die Anzahl der gelöschten Session-Daten
   zurück, sondern nur das Flag für Erfolg/Fehlschlag. In diesem Fall ist die
   Anzahl der gelöschten Session-Daten immer 1, unabhängig von der
   tatsächlichen Anzahl der gelöschten Daten.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.session-gc-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>session_gc()</strong></span>-Beispiel für Taskmanager wie cron</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Hinweis: Dieses Skript muss vom selben Benutzer ausgeführt werden<br />// wie der Prozess des Webservers.<br /><br />// Um den Zugriff auf den Session-Datenspeicher zu initialisieren,<br />// ist eine aktive Session erforderlich.<br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Führt GC sofort aus<br /></span><span style="color: #0000BB">session_gc</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Löschen der von session_gc() erzeugten Session-ID<br /></span><span style="color: #0000BB">session_destroy</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 <span class="function"><strong>session_gc()</strong></span>-Beispiel für ein Skript, auf das ein Benutzer Zugriff hat</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Hinweis: Es wird empfohlen, dass session_gc() von einem Taskmanager-Skript<br />// verwendet wird, aber es kann auch wie folgt verwendet werden.<br /><br />// Wird verwendet, um den letzten GC-Zeitpunkt zu überprüfen<br /></span><span style="color: #0000BB">$gc_time </span><span style="color: #007700">= </span><span style="color: #DD0000">'/tmp/php_session_last_gc'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$gc_period </span><span style="color: #007700">= </span><span style="color: #0000BB">1800</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br /></span><span style="color: #FF8000">// GC nur dann ausführen, wenn die GC-Periode verstrichen ist,<br />// d. h. session_gc() bei jeder Anfrage aufzurufen, ist eine Verschwendung<br />// von Ressourcen.<br /></span><span style="color: #007700">if (</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$gc_time</span><span style="color: #007700">)) {<br />    if (</span><span style="color: #0000BB">filemtime</span><span style="color: #007700">(</span><span style="color: #0000BB">$gc_time</span><span style="color: #007700">) &lt; </span><span style="color: #0000BB">time</span><span style="color: #007700">() - </span><span style="color: #0000BB">$gc_period</span><span style="color: #007700">) {<br />        </span><span style="color: #0000BB">session_gc</span><span style="color: #007700">();<br />        </span><span style="color: #0000BB">touch</span><span style="color: #007700">(</span><span style="color: #0000BB">$gc_time</span><span style="color: #007700">);<br />    }<br />} else {<br />    </span><span style="color: #0000BB">touch</span><span style="color: #007700">(</span><span style="color: #0000BB">$gc_time</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.session-gc-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.session-start.php" class="function" rel="rdfs-seeAlso">session_start()</a> - Erzeugt eine neue Session oder setzt eine vorhandene fort</span></li>
    <li><span class="function"><a href="function.session-destroy.php" class="function" rel="rdfs-seeAlso">session_destroy()</a> - L&ouml;scht alle in einer Session registrierten Daten</span></li>
    <li><a href="session.configuration.php#ini.session.gc-probability" class="link">session.gc_probability</a></li>
   </ul>
  </p>
 </div>


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