2010-08-06 29 views
9

¿Cómo puedo obtener una lista de todas las sesiones de PHP activas en un servidor y acceder a ellas desde la instancia de un usuario?Acceso a sesiones activas en PHP

El caso motivador muestra una lista de todos los usuarios actualmente activos en el sitio, donde los nombres de usuario se almacenan en la sesión PHP de cada usuario.

Nota: Sé que puedo crear mi propio estado a través de una base de datos (o incluso el sistema de archivos), pero estoy buscando una forma de utilizar los mecanismos de sesión PHP incorporados.

+0

posible duplicado de [Looping a través de todas las sesiones de un servidor en PHP] (http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – ircmaxell

+0

Sí, es - No encontré esa buscando, pero aprecio el enlace. – Greg

+0

Posible duplicado de [Looping a través de todas las sesiones de un servidor en PHP] (https://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php) – Finwe

Respuesta

7

Ver las respuestas, aunque es posible, no significa que debería hacerlo. El formato en el que se almacenan las sesiones no está documentado y puede cambiar en cualquier momento (incluso entre versiones menores).

El correcto forma de hacerlo es implementar su propio session handler. No es tan difícil, realmente.

0

Las sesiones se almacenan como archivos en su directorio de sesión temporal. Debería poder ubicar esto en php.ini (o usando phpinfo()). Esas son todas las sesiones. Debería poder verificar la hora del archivo para ver si están activos dentro de los últimos x minutos.

1

No puede utilizar las sesiones para hacer esto, debe almacenar los usuarios en línea en una base de datos y simplemente establecer una marca de tiempo o similar, mostrar todos los que están activos en 5 minutos, sino eliminar sus registros.

6

Lista Sesión

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

Compruebe si hay una sesión específica

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

Sesión hora del archivo Ultimo cambio de

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

Como ya se ha hecho hasta la muerte, ya no es una buena práctica manejar sesiones de esta manera, pero si es necesario, funcionarán sin la necesidad de verificar/modificar la ruta de almacenamiento de la sesión (útil si cambia a otro servidor con una configuración diferente).