2010-08-06 29 views
9

Wie kann ich eine Liste aller aktiven PHP-Sitzungen auf einem Server abrufen und auf sie innerhalb der Instanz eines Benutzers zugreifen?Zugriff auf aktive Sitzungen in PHP

Der motivierende Fall zeigt eine Liste aller derzeit aktiven Benutzer auf der Website an, wobei Benutzernamen in der PHP-Sitzung jedes Benutzers gespeichert sind.

Hinweis: Ich weiß, dass ich meinen eigenen Status über eine Datenbank (oder sogar das Dateisystem) erstellen kann, aber ich suche nach einer Möglichkeit, die integrierten PHP-Session-Mechanismen zu verwenden.

+0

mögliche Duplikate von [Looping durch alle Sitzungen eines Servers in PHP] (http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – ircmaxell

+0

Ja, ist es - Ich habe das nicht gefunden, aber schätze den Link. – Greg

+0

Mögliches Duplikat von [Alle Sitzungen eines Servers in PHP durchlaufen] (https://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – Finwe

Antwort

7

Die Antworten zu sehen, obwohl es möglich ist, bedeutet es nicht, dass Sie sollten es tun. Das Format, in dem die Sitzungen gespeichert werden, ist nicht dokumentiert und kann sich jederzeit ändern (auch zwischen Nebenversionen).

Die richtige Weg, dies zu tun, ist Ihre eigene session handler zu implementieren. Es ist nicht so schwer, wirklich.

0

Die Sitzungen werden als Dateien in Ihrem temporären Sitzungsverzeichnis gespeichert. Sie sollten in der Lage sein, dies in der php.ini zu finden (oder phpinfo()). Das sind alle Sitzungen. Sie sollten in der Lage sein, die Dateizeit zu überprüfen, um zu sehen, ob sie innerhalb der letzten x Minuten aktiv ist.

1

Sie können dafür keine Sessions verwenden, Sie müssten die Online-Benutzer in einer Datenbank speichern und nur einen Zeitstempel oder ähnliches einstellen, die alle in 5 Minuten aktiven anzeigen, ansonsten ihre Datensätze löschen.

6

Sitzungsliste

<?php 
print_r(scandir(session_save_path())); 
?> 

prüfen für eine bestimmte Session

<?php 
session_start(); 
echo (file_exists(session_save_path().'/sess_'.session_id()) ? 1 : 0); 
?> 

Zeit Session-Datei geändert Last

<?php 
session_start(); 
echo filectime(session_save_path().'/sess_'.session_id()); 
?> 

Wie bereits zu Tode geschehen, ist es nicht die beste Vorgehensweise, Sitzungen auf diese Weise zu behandeln, aber wenn sie benötigt werden, funktionieren diese ohne den Sitzungsspeicherpfad zu überprüfen/ändern (nützlich, wenn Sie zu einem anderen Server mit wechseln eine andere Konfiguration).