T
Ich hab mich damit auch schon intensiver beschäftigt und keine richtig zufriedenstellende Lösung gefunden.
Allerdings heißt das nicht, dass es nicht geht! Ich hab ein meinem Falle einerseits das onunload-Event von JS verwendet, um ein kleines AJAX-Request zu verschicken. Das aber nur als Sicherheit, ansonsten gibt es drei Möglichkeiten, einen Timeout festzustellen:
1. Über PHP ohne Cron, zwar zuverlässig, aber man weiß nie, wann der Timeout ausgelöst wird.
2. PHP mit Cron
3. Ein AJAX-Statusrequest, das per Timer sekündlich ausgelöst wird.
Die dritte Möglichkeit ist zwar nahe an Echtzeit, aber nicht komplett zuverlässig. Wenn der Benutzer kein JS an hat, war's das auch schon. Daher gibt es nur eine Alternative (abgesehen von anderen Techniken wie Flash oder Silverlight), nämlich die Implementation mindestens einer serverseitigen PHP-Lösung in Kombination mit den Client-JavaScripts.