PHP Tutorials, PHP lernen, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt3
Heute286
Gestern250
Gesamt2346674

Sessions in PHP - Garbage Collection

Autor Flitze
Klicks 206046
Rating für Sessions in PHP
  8.7 von 10
Bewertungen135
Stand 12.06.2013
Keywords:
PHP-Session-Verwaltung, Probleme mit PHP Sessions, session_set_save_handler, Sessions, PHP, Garbage Collection, Müll entsorgen

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Workshops » Sessions in PHP » Sessions in PHP - Garbage Collection
Seite : 1 2 3 4 5 Bewerten
Article Wizard - deutscher Article Spinner

2. Sessions manuell beenden und 'Müll entsorgen'

[ADSENSE_LINE]Zum Beenden einer Session benutzt man die Funktion session_destroy(). Dadurch wird zwar die aktuelle Sessiondatei auf dem Server gelöscht, die Daten von $_SESSION bleiben aber noch für die Laufzeit dieses Scriptes verfügbar!

Aus diesem Grund sollte man vor dem 'zerstören' der Session die Session immer zuerst leeren. Wenn beim Starten der Session ein Cookie gesetzt wurde, sollte dieses außerdem gelöscht werden. Dies erreicht man, wenn man setcookie mir einer Ablaufzeit, die in der Vergangenheit liegt, aufruft.

Beispiele dazu:

PHP:
<?php
    
// Session starten
    
session_start();

    
$_SESSION['foo'] = "bar";

    echo 
$_SESSION['foo'];
    
// Ausgabe : bar

    // Session zerstören
    
session_destroy();

    echo 
$_SESSION['foo'];
    
// Ausgabe : bar
?>


PHP:
<?php
    
// Session starten
    
session_start();

    
$_SESSION['foo'] = "bar";

    echo 
$_SESSION['foo'];
    
// Ausgabe : bar

    // $_SESSION leeren
    
$_SESSION = array();
    
// Session zerstören
    
session_destroy();

    echo 
$_SESSION['foo'];
    
// Ausgabe : 
?>


PHP:
<?php
    
// Session starten
    
session_start();

    
$_SESSION['foo'] = "bar";

    
// Cookie vernichten, muss VOR jeder Ausgabe stattfinden!
    
setcookie(session_name(), ""time()-3600);

    echo 
$_SESSION['foo'];
    
// Ausgabe : bar


    // $_SESSION leeren
    
$_SESSION = array();
    
// Session zerstören
    
session_destroy();

    echo 
$_SESSION['foo'];
    
// Ausgabe : 
?>


Dieses manuelle Beenden der Sessions bietet sich z.B. bei der Logout-Funktion eines Loginsystems an.

Müllentsorgung

Nicht immer gibt es jedoch ein so eindeutiges Ereignis wie das 'Ausloggen'. Man kann ja auch eine Session für Gäste, also unregistrierte User, starten. Das macht z.B. dann Sinn, wenn man ein Gästebuch hat und kontrollieren will, ob dieser User bereits einen Eintrag hinterlassen hat. Man speichert dann nach erfolgreicher Erstellung eines Beitrages eine Information ( z.B. $_SESSION['GBook']= '1' ) in der Session und kontrolliert diese beim nächsten Versuch dieses Users, einen Eintrag zu hinterlassen.
Aber zurück zum eigentlichen Problem. Diese User sind nicht eingeloggt o.ä. und können sich daher logischerweise auch nicht ausloggen. Defacto bedeutet das, dass die Datei auf dem Server, die die Informationen dieser Session enthält, auch nicht gelöscht wird.

Damit nun der Server nicht unnötig mit diesen 'toten' Sessions zugemüllt wird, gibt es eine PHP eigene Müllentsorgung, die sog. garbage colletion. Sie sorgt dafür, dass Sessions die eine gewisse Zeit inaktiv waren, gelöscht werden. Man kann in der php.ini oder per ini_set 3 Optionen verändern, die das Verhalten der garbage collection beeinflussen.

session.gc_probability

wird in Verbindung mit session.gc_divisor dazu verwendet, die Wahrscheinlichkeit zu regeln, mit der die gc (garbage collection) Routine gestartet wird. Grundeinstellung 1.

session.gc_divisor

definiertdie Wahrscheinlichkeit, mit der die garbage collection bei jeder Initialisierung einer Session gestartet wird. Die Wahrscheinlichkeit errechnet sich aus gc_probability/gc_divisor. Die Grundeinstellung ist 100.

Daraus ergibt sich eine Grundwahrscheinlichkeit von 1/100, sodass bei jeder 100. Session Anfrage die Müllentsorgung aktiviert wird.

session.gc_maxlifetime

spezifiziert die Anzahl der Sekunden, nach denen Daten als 'garbage' ( 'Müll' ) betrachtet und entsorgt werden. Die Speicherbereinigung wird zu Beginn einer Session durchgeführt. Grundeinstellung ist 1440.

Zurück zur vorigen Seite:
Sessions in PHP - Sessions starten
Weiter zur nächsten Seite:
Sessions in PHP - php.ini

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024