Oder, wenn Du den Kram unbedingt in der DB haben willst, schreibst Du dir einen eigenen Sessionhandler, der die Sessions nicht in /tmp sondern eben in der DB ablegt.
Alte Sessions werden dann genau so gelöscht, wie es unter /tmp der Fall ist.
Hier mal ein Beispiel wie sowas aussehen könnte:
PHP-Code:
function sessionHandler()
{
session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
}
function open($save_path, $session_name)
{
mysql_connect("localhost", "benutzer", "passwd");
mysql_select_db("dingens");
$table = $session_name;
return true;
}
function read($session_id)
{
$result = mysql_query("select VALUE from SESSION_STORE where SESSION_ID = '" . $session_id . "'");
if($result && mysql_num_rows($result))
{
return mysql_result($result, 0);
}
else
{
echo mysql_error();
}
}
function write($session_id, $data)
{
$data = addslashes($data);
$strQuery = "replace into SESSION_STORE (SESSION_ID, VALUE) values ('" . $session_id . "', '" . $data . "')";
mysql_query($strQuery) or mysql_error();
return true;
}
function close()
{
return true;
}
function destroy($session_id)
{
mysql_query("delete from SESSION_STORE where SESSION_ID = '" . $session_id . "'");
return true;
}
function gc($max_time)
{
$strQuery = "delete from SESSION_STORE where unix_timestamp(EXPIRATION) < unix_timestamp()-$max_time";
mysql_query($strQuery) or mysql_error();
return true;
}
Wenn Du einfach am vor dem Start der Session sessionHandler() aufrufst läuft alles über die DB und nicht über /tmp
Bis neulich ...
Lesezeichen