Die PHP-Skript ist wie folgt:PHP - ini_set ('session.gc_maxlifetime', 5) - Warum wird die Sitzung nicht beendet?
<?php // continue.php
ini_set('session.gc_maxlifetime', 5);
session_start();
echo ini_get('session.gc_maxlifetime');
// wait for 7 seconds
usleep(7000000);
if (isset($_SESSION['username']))
{
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$forename = $_SESSION['forename'];
$surname = $_SESSION['surname'];
echo "Welcome back $forename.<br />
Your full name is $forename $surname.<br />
Your username is '$username'
and your password is '$password'.";
}
else echo "Please <a href=authenticate2.php>click here</a> to log in.";
?>
auf dem Timeout Basierend (d.h. 5 Sekunden), sollte das Skript nichts ausdrucken. Allerdings erhalte ich immer noch die folgende Meldung
5Welcome back Bill. Your full name is Bill Smith. Your username is 'bsmith' and your password is 'mysecret'.
Es scheint, dass die Linie ini_set (‚session.gc_maxlifetime‘, 5) nicht funktioniert, wie es sein sollte. Ich verwende WindowsXP + XAMMP.
Können Sie mir sagen, wie es funktioniert?
Danke
Ich denke, der Punkt hier ist, dass die Sitzung immer noch aktiv ist, und sollte daher wahrscheinlich nicht auf jeden Fall der Garbage Collection unterzogen werden. Ich weiß es nicht genau. –
@Pekka Der Punkt ist, dass die Garbage Collection hier nutzlos ist, weil 1) sie nur mit einer kleinen Wahrscheinlichkeit aufgerufen wird und 2) sie nur bei 'session_start' aufgerufen wird. – Artefacto
vereinbart. Außerdem ist die Garbage Collection noch nutzloser, da die Sitzung, in der wir uns befinden, immer noch aktiv ist (und einige interne Handler vermutlich gesperrt sind). Richtig? –