2010-08-06 10 views
9

Comment puis-je obtenir une liste de toutes les sessions PHP actives sur un serveur et y accéder à partir de l'instance d'un utilisateur?accès sessions actives en PHP

Le cas motivant affiche une liste de tous les utilisateurs actuellement actifs sur le site, où les noms d'utilisateur sont stockés dans la session PHP de chaque utilisateur.

Note: Je sais que je peux créer mon propre état via une base de données (ou même le système de fichiers), mais je suis à la recherche d'un moyen d'utiliser les mécanismes de session PHP intégré.

+0

duplication possible de [Boucle dans toutes les sessions d'un serveur en PHP] (http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – ircmaxell

+0

Oui, c'est - Je n'ai pas trouvé celui qui cherchait, mais j'apprécie le lien. – Greg

+0

double possible de [Boucler dans toutes les sessions de un serveur en PHP] (https://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – Finwe

Répondre

7

En voyant les réponses, mais il est possible, cela ne signifie pas que vous devez faire. Le format dans lequel les sessions sont stockées n'est pas documenté et peut changer à tout moment (même entre des versions mineures).

La correcte façon de le faire est de mettre en œuvre votre propre session handler. Ce n'est pas si dur, vraiment.

0

Les sessions sont stockées sous forme de fichiers dans votre répertoire temporaire de session. Vous devriez être capable de localiser cela dans le php.ini (ou en utilisant phpinfo()). Ce sont toutes les sessions. Vous devriez être en mesure de vérifier l'heure du fichier pour voir si elles sont actives au cours des x dernières minutes.

1

Vous ne pouvez pas utiliser des sessions pour ce faire, vous devez stocker les utilisateurs en ligne dans une base de données, et juste définir un horodatage ou similaire, l'affichage tous ceux qui sont actifs avec 5 minutes, sinon supprimer leurs enregistrements.

6

session Liste

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

Vérifier une session spécifique

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

session Temps Fichier Dernière modification

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

Comme cela a été fait à la mort, déjà, il est plus pratique pour gérer les sessions de cette façon, mais si elle est nécessaire, ceux qui fonctionnera sans la nécessité de vérifier/modifier le chemin de stockage de session (utile si vous passez à un autre serveur avec une configuration différente).