Page 1 sur 1

SESSION, collecter toutes les valeurs stockées

Posté : 28 mars 2010, 21:44
par Stef
Hellooo : )

J'ai un code dans lequel j'utilise une variable de session pour stocker le nom ($_SESSION['user']) de l'utilisateur...

Imaginons qu'il y a 10 utilisateurs qui sont connectés, comment récupérer(*) tous les noms stockés en session?

En vue d'un affichage du style "Utilisateurs connectés: untel, untel, untel, ...."

Re: SESSION, collecter toutes les valeurs stockées

Posté : 28 mars 2010, 21:52
par stealth35
a toi de faire une liste des connecter, a chaque page ouvert tu ranges dans une table qui et a quel heure, suffis de récupérer ceux qu'on son la depuis 5 min par exemple

Re: SESSION, collecter toutes les valeurs stockées

Posté : 28 mars 2010, 21:59
par Stef
Oui c'est une idée..

J'ai oublier de préciser: sans passer par une bdd!

Voilà pourquoi j'ai posé cette question parce que ça serait très simple si je pouvais uniquement me baser sur les noms stockés en session pour parvenir à mon but: afficher une liste de ceux-ci.

Mais vu ta réponse je me demande si c'est possible... :|

Re: SESSION, collecter toutes les valeurs stockées

Posté : 28 mars 2010, 22:01
par stealth35
techniquement tu pourrais aller lire tout les fichier de sessions dans le temp et les decoder, faudrais lancer le garbage de sessions a chaques fois par contre, mais bon c'est pas le top , si ta 100 ca te fais ouvrir 100 fichier a chaque fois qu'un utilisateur change de page, tu pourrais utiliser APC limite...

Re: SESSION, collecter toutes les valeurs stockées

Posté : 28 mars 2010, 22:06
par Stef
techniquement tu pourrais aller lire tout les fichier de sessions dans le temp et les decoder, faudrais lancer le garbage de sessions a chaques fois par contre, mais bon c'est pas le top , si ta 100 ca te fais ouvrir 100 fichier a chaque fois qu'un utilisateur change de page, tu pourrais utiliser APC limite...

Hum...

donc en fait c'est pas aussi simple que je me l'imaginais...

Je crois que je vais opter pour l'utilisation bdd...

Merci pour ton aide!! : )

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 00:42
par stealth35
tu peu tester ca si tu veux (php >= 5.3.0)
    
session_start();
    
$tmp    = 'glob://' . session_save_path() . '/sess_*';
$old    = $_SESSION;
$users  = array();
    
foreach(new DirectoryIterator($tmp) as $file)
{
    $session = file_get_contents($file->getPathname());
        
    if(session_decode($session))
    {            
        if(isset($_SESSION['login']))
        {
            $users[] = $_SESSION['login'];
        }  
    }
}
    
$_SESSION = $old;

echo implode(', ', $users);

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 00:47
par Stef
Super, je vais tester ça! je te dirais...

Merci beaucoup!!

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 00:49
par stealth35
tu peu aussi gérer les session avec sqlite en modifiant le php.ini, ca te permet d'ouvrir juste la base et faire ta requête (en plus avec la gestion temps ca sera plus simple)

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 01:05
par Stef
Je cogitais là-dessus... c'est pour un tchat, et je vais mettre à jour les stats d'utilisateurs connectés toutes les 5min (via ajax), donc je pense que passé par une bdd devrait être plus sage... non?

Par ailleurs sqlite, oui j'y pensais. Mais je suis chez ovh, en mutualisé... donc pas d'accès au php.ini.

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 01:18
par stealth35
par rave ca, soit par htacess, soit depuis php 5.3 (dispo sous ovh) tu peu faire ton php.ini toi même suffis de le nommer *.user.ini

http://php.net/manual/fr/configuration. ... r-user.php

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 01:23
par Stef
Mazette! Ben bien content de l'apprendre : ) Intéressant cette histoire de user.ini, ça ouvre de nouvelles perspectives. Merci pour l'info!!

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 01:24
par Dr@ke
SI c'est un chat purement php, il faut bien un refresh avec un temps court, pour afficher les new messages des autres utilisateurs connectés.
Donc pourquoi ne pas aussi vérifier si la session est active en même temps?

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 01:43
par Stef
J'actualise l'affichage des messages via ajax et php, toutes les 4 secondes... Les messages sont enregistrés dans un fichier texte (je suis encore en train de me demander comment je vais faire pour alléger régulièrement le fichier (du style le remettre à zero plusieurs fois par jour (je me demande si j'aurais pas mieux fait d'utiliser une bdd))).
M'enfin, ce tchat c'est plus pour le défi de réaliser un p'tit projet comme ça que pour réellement l'utiliser.

Sinon, comment on vérifie qu'une session est active ?

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 09:48
par stealth35
tu peux pas, c'est pareil checker tout les X temps, tu me diras sur les serveurs chat c'est pareil sauf qu'il on un évènement lorsque qu'il se déconnecte, entre temps ca marche au ping si y'as pas de réponse t'es considérer comme déconnecter

Re: SESSION, collecter toutes les valeurs stockées

Posté : 29 mars 2010, 11:56
par Stef
Oui ok, en fait j'ai mis un lien déconnection, à ce moment je delete l'utilisateur de la table...