hallo,
ich verwende ein datenbankbasiertes eigenes Session-handling um den Online-Status von Benutzern über die Datenbank abzurufen.
Jetzt gibt es bei mir einen Bereich indem per Ajax automatisch in regelmäßigen Abständen eine Aktualisierung durchgeführt wird, ohne das der Nutzer dazu eine Aktion durchführen muss.
Jetzt wollte ich hier jedoch, dass die "last_update-Spalte" durch diese automatische Aktualisierung nicht erhöht wird, sodass der Nutzer dann automatisch ausgeloggt wird bzw. als AFK(away from keyboard) ausgewiesen wird,wenn er längere Zeit nichts unternimmt.
Dazu muss jedoch auch eine $_SESSION Variable abgefragt,also eigentlich nur gelesen werden.Leider wird hierbei aus mir unerklärlichen Gründen auch die write()-Methode des Session-handlers ausgeführt,sodass "last_update" ebenso erhöht wird.
Bereits diese if-Abfrage verursacht eine Aktualisierung:
Meine Frage wäre also,wie kann ich das ungewollte Auslösen der write()-Methode verhindern?
Anm.
Kann doch eigentlich garnicht sein,nach meiner Überlegung müsste die write()-Methode doch nur aufgerufen werden,wenn ich eine $_SESSION Variable z.B. über $_SESSION['example']='xyz'; verändere oder neu anlege,oder?
EDIT:
Ich habe das datenbankbasierte Session-handling aus einem buch nhazu 1:1 übernommen und bin bei der überprüfung auf das hier gestoßen:
Leider ist mir nicht ganz klar was die "register_shutdown_function" macht(wird im buch auch nicht weiter erklärt),doch nehme ich mal an das der Parameter "'session_write_close" für mein Problem verantwortlich sein könnte.Wenn es so wäre,welchen Parameter sollte ich stattdessen verwenden?
ich verwende ein datenbankbasiertes eigenes Session-handling um den Online-Status von Benutzern über die Datenbank abzurufen.
Jetzt gibt es bei mir einen Bereich indem per Ajax automatisch in regelmäßigen Abständen eine Aktualisierung durchgeführt wird, ohne das der Nutzer dazu eine Aktion durchführen muss.
Jetzt wollte ich hier jedoch, dass die "last_update-Spalte" durch diese automatische Aktualisierung nicht erhöht wird, sodass der Nutzer dann automatisch ausgeloggt wird bzw. als AFK(away from keyboard) ausgewiesen wird,wenn er längere Zeit nichts unternimmt.
Dazu muss jedoch auch eine $_SESSION Variable abgefragt,also eigentlich nur gelesen werden.Leider wird hierbei aus mir unerklärlichen Gründen auch die write()-Methode des Session-handlers ausgeführt,sodass "last_update" ebenso erhöht wird.
Bereits diese if-Abfrage verursacht eine Aktualisierung:
PHP-Code:
/*ajax.php:*/
..
if(!isset($_SESSION))
{
session_set_save_handler(new db_login());
session_name('my_session_handler');
session_start();
}
..
/*db_login.class.php*/
class db_login extends \SessionHandler
{
..
function write($sesID,$data)
{..}
..
}
Anm.
Kann doch eigentlich garnicht sein,nach meiner Überlegung müsste die write()-Methode doch nur aufgerufen werden,wenn ich eine $_SESSION Variable z.B. über $_SESSION['example']='xyz'; verändere oder neu anlege,oder?
EDIT:
Ich habe das datenbankbasierte Session-handling aus einem buch nhazu 1:1 übernommen und bin bei der überprüfung auf das hier gestoßen:
PHP-Code:
class db_login extends \SessionHandler
{
..
function __construct()
{
register_shutdown_function('session_write_close');
}
..
}
Kommentar