Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich wollte einfach mal fragen ob sich jemand schonmal mit der session_set_save_handler() funtion auseinander gesetzt hat ?!

Also die Benutzerdefinierte Session-Speicherfunktion von PHP. Bei mir funktioniert insoweit alles, er speichert die Session + Daten in einer DB und liest sie auch wieder aus. Der session_destroy() mit der Datenbank funktioniert auch, nur die function sec_gc() funktioniert einfach nicht. Er löscht den Garbage nach einer bestimmten Zeit einfach nicht. Dieses Problem hatte ich auch schon mit dem definierten session.gc_maxlifetime Wert in der php.ini, wenn ich den Intervall auf 10sec gesetzt habe wurde die session auch nie gelöscht, also ein allgemeines Problem von PHP ?!

Leider gibt einem die PHP-Hilfe wenig hilfreiches über dieses Thema ...

Ich habe mein Script mal gepostet ...

<?

$current_session_name = false;

function connectDB(){

$db = "db-rz-09-idl10";

mysql_connect("db-rz-09", "-", "-");

mysql_select_db($db);

}

function disconnectDB(){

mysql_close();

}

function sec_open($save_path, $session_name) {

GLOBAL $current_session_name;

$current_session_name = $session_name;

}

function sec_close() {

return true;

}

function sec_read($key) {

GLOBAL $current_session_name;

connectDB();

$r = "SELECT value FROM session WHERE idkey = '$key' AND name = '$current_session_name'";

$result = mysql_query($r);

if (mysql_num_rows($result) == 1) {

$session_data = mysql_result($result,0,'value');

return $session_data;

} else {

return "";

}

disconnectDB();

}

function sec_write($key, $value) {

GLOBAL $current_session_name;

connectDB();

$r = mysql_query("SELECT idkey FROM session WHERE idkey = '$key' AND name = '$current_session_name'");

if (mysql_num_rows($r)==0) {

mysql_query("INSERT INTO session (name,idkey,value,timestamp) VALUES ('$current_session_name','$key','$value',".time().")");

} else {

mysql_query("UPDATE session SET value = '$value', timestamp = ".time()." WHERE name = '$current_session_name' AND idkey = '$key'");

}

return true;

disconnectDB();

}

function sec_destroy($key) {

GLOBAL $current_session_name;

connectDB();

if (!mysql_query("DELETE FROM session WHERE idkey = '$key' AND name = '$current_session_name'")) {

return false;

} else {

return true;

}

disconnectDB();

}

function sec_gc($maxlifetime) {

GLOBAL $current_session_name;

connectDB();

$r = mysql_query("SELECT idkey FROM session WHERE name = '".$current_session_name."' AND timestamp < ".(time()-$maxlifetime));

if (!$r) {

return false;

}

for ($i=0; $i < mysql_num_rows($r); $i++) {

$row = mysql_fetch_array($r,$i);

sec_destroy($row["key"]);

}

return true;

disconnectDB();

}

session_set_save_handler ("sec_open", "sec_close", "sec_read", "sec_write", "sec_destroy", "sec_gc");

session_start();

?>

Wäre genial wenn jemand wüsste woran es liegt und wie man es beheben kann, also das mit der sec_gc() ...

MfG

7-Zip

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...