Start · Sprachen · PHP · Referenz · session_cache_expire

session_cache_expire

Funktion

Liest oder setzt die Cache-Verfallszeit (in Minuten) für Seiten mit Session-Daten.

seit PHP 4.2.0 Kategorie: http

Signatur

session_cache_expire(?int $value = null): int|false

Beschreibung

session_cache_expire() steuert, wie lange Seiten, die Session-Daten ausliefern, im Browser-Cache des Clients gültig bleiben sollen. Der Wert wird in Minuten angegeben und beeinflusst den HTTP-Header Expires sowie Cache-Control: max-age, die PHP beim Starten einer Session automatisch sendet – sofern session.cache_limiter nicht auf nocache gesetzt ist.

Ohne Argument gibt die Funktion den aktuell konfigurierten Wert zurück (Standard: 180 Minuten). Wird ein ganzzahliger Wert übergeben, wird die Einstellung für die aktuelle Anfrage geändert und der vorherige Wert zurückgegeben. Der neue Wert entspricht dem INI-Eintrag session.cache_expire.

Die Funktion muss vor dem Aufruf von session_start() aufgerufen werden, da die HTTP-Header erst beim Start der Session gesendet werden. Eine spätere Änderung hat keine Wirkung auf die bereits versendeten Header.

Relevant ist diese Funktion vor allem dann, wenn der Cache-Limiter auf public oder private steht. Bei nocache oder private_no_expire wird kein Expires-Header gesendet, sodass die Verfallszeit keine praktische Auswirkung hat.

Parameter

Name Typ Default Beschreibung
$value int|null null Neue Cache-Verfallszeit in Minuten. Wird null oder kein Wert übergeben, bleibt die aktuelle Einstellung unverändert und es wird nur der aktuelle Wert zurückgegeben.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die aktuelle (bzw. vorherige, falls ein neuer Wert gesetzt wurde) Cache-Verfallszeit als Integer zurück. Gibt false zurück, wenn die Session bereits gestartet wurde und der Wert nicht mehr geändert werden kann.

Beispiele

Aktuelle Cache-Verfallszeit auslesen

<?php
// Vor session_start() aufrufen
$expire = session_cache_expire();
echo 'Aktuelle Cache-Verfallszeit: ' . $expire . ' Minuten';

session_start();
Aktuelle Cache-Verfallszeit: 180 Minuten

Cache-Verfallszeit auf 60 Minuten setzen

<?php
// Cache-Limiter auf 'public' setzen, damit Expires-Header gesendet wird
session_cache_limiter('public');

// Verfallszeit auf 60 Minuten setzen (vorher: 180)
$vorheriger_wert = session_cache_expire(60);
echo 'Vorheriger Wert: ' . $vorheriger_wert . ' Minuten' . PHP_EOL;
echo 'Neuer Wert: ' . session_cache_expire() . ' Minuten' . PHP_EOL;

session_start();
// Ab hier werden entsprechende Cache-Control- und Expires-Header gesendet
Vorheriger Wert: 180 Minuten Neuer Wert: 60 Minuten

Keine Caching-Verfallszeit bei nocache-Limiter

<?php
// nocache verhindert jegliches Caching – cache_expire hat dann keine Wirkung
session_cache_limiter('nocache');
session_cache_expire(120); // Wird ignoriert, da nocache aktiv

session_start();
// Gesendete Header:
// Cache-Control: no-store, no-cache, must-revalidate
// Pragma: no-cache
// Es wird KEIN Expires-Header gesendet

// Wichtig · Fallstricke

Reihenfolge beachten: session_cache_expire() muss zwingend vor session_start() aufgerufen werden. Andernfalls sind die HTTP-Header bereits gesendet und die Funktion gibt false zurück, ohne etwas zu ändern.

Der gesetzte Wert gilt nur für die aktuelle Anfrage und wird nicht dauerhaft in der php.ini gespeichert. Für dauerhafte Änderungen muss session.cache_expire in der php.ini oder per ini_set() vor session_start() angepasst werden.

Sicherheitshinweis: Sehr lange Cache-Zeiten bei öffentlichen Seiten können dazu führen, dass sensible Session-bezogene Inhalte im Browser-Cache verbleiben, selbst nachdem der Benutzer sich ausgeloggt hat. Für sensible Bereiche empfiehlt sich session_cache_limiter('nocache').