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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...