BloodySword: Problem beim onunload event: User wird einfach ausgeloggt!

Beitrag lesen

Da die Session alle 20 Sekunden durch Ajax-aufrufe verlängert wird
reicht es session.gc_maxlifetime = 300 zu setzten, was eine Zeit von 5 Minuten
entspricht. Genau so werden auch die Sessions dann in der DB gelöscht:

$qcos="[code lang=sql]DELETE FROM `sessions`  
                        WHERE `timestamp` < (NOW() - INTERVAL 5 MINUTE)
~~~";[/code]  
  
Diese Query wird bei JEDEN Klick eines beliebigen Users ausgeführt.  
  
Was die "GHOST"-Funkiton angeht: Natürlich wird es noch eine derartige Funktion geben.  
Reicht einfach eine neue Spalte in der Tabelle ``sessions``{:.language-sql}, wo der jeweilige Status  
des Users angegeben wird. :)  
  
Du hast Recht, es ist ein viel zu großer Mehraufwand, der sich nicht lohnt.  
Bei einer Sessiondauer von 5 Minuten ist das ja wohl noch zu verkraften.  
Wenn ein User sich nicht ausloggt, so wird er dann nach 5 Minuten offline  
angezeigt. Das reicht vollkommen aus. Das Wichtigste ist ja auch, dass die  
Session-Files gekillt werden. Tote Sessions müllen den Server zu.  
  
Für alle, die sich dennoch für eine Lösung interessieren: Hier ist sie!  
  
Erstellt ein Frameset mit einem Frame wo eure Site angezeigt wird und ein  
unsichtbares Frame, wo euer AJAX im onunload-Event eingebaut ist. Wenn der  
User rum browst wird er nicht ausgeloggt, erst wenn er das Browserfenster  
oder den Tab schließt. Wer auf Sicher gehen will, kann sich den Server mit  
Requsts per AJAX zumüllen und eine "Bin noch da"-Kopplung basteln.  
  
lg