IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

[CGI][SESSION]Probleme de nettoyage des sessions


Sujet :

Web Perl

  1. #1
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut [CGI][SESSION]Probleme de nettoyage des sessions
    Salut,

    J'ai remarque un truc en testant CGI::Session, les sessions qui ne sont plus utilisees (qui sont souvent expirees en plus) ne sont jamais supprimees. Y a t il un moyen de faire un nettoyage du repertoire de stockage pour chaque acces aux sessions par Perl un peu dans le style de ce qui est fait automatiquement en PHP ?

    Merci d'avance !!
    In code we trust !!

  2. #2
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    Bon je me suis trouve une solution temporairement definitive (je suis preneur d'une meilleure solution).

    En gros je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    use strict ;
    use Safe ;
    ...
    # get list of session files
    my $FilesList = [glob($Instance->{sesstmpdir}.'*')] ;
    my $CleanupList = [] ;
     
    # sandbox for safe eval
    my $Safe = new Safe() ;
     
    foreach my $FileName (@{$FilesList})
    {
    	open FILE, $FileName ;
     
    	my $Data = undef ;
    	while (<FILE>)
    	{
    		$Data .= $_ ;
    	}
     
    	# remove possible '\n'
    	my ($SafeString) = $Data =~ m/^(.*)$/ ;
     
    	# deserialize session file content
    	my $Session = $Safe->reval($SafeString) ;
     
    	# check if session if expired
    	if ($Session->{_SESSION_ETIME} and $Session->{_SESSION_CTIME} + $Session->{_SESSION_ETIME} < time)
    	{
    		push @{$CleanupList}, $FileName ;
    	}
     
    	close FILE ;
    }
     
    # remove all expired session files
    foreach my $FileName (@{$CleanupList})
    {
    	unlink $FileName ;
    }
    J'ai peur que si il y a 300 sessions le temps d'acces devienne longuet ...
    In code we trust !!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Deja au cas où tu ne l'aurais pas déjà fait tu peux jeter un coup d'oeil à la documentation du CPAN.

    CGI::Session

    En ce qui concerne ton problème tu as essayé de mettre un temps limité a tes sessions ?
    en utilisant la methode

    $session->expire("2h");

    normalement ça fonctionne plutot bien.

  4. #4
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    Oui la doc c'est deja fait, tout mon mecanisme de session repose dessus de toute facon
    En fait je met par defaut une expiration d'un mois pour mes sessions.
    Mais j'ai fait mes tests avec 10 secondes. Donc dans le cas ou j'ouvre mon browser, ca cree le fichier de session. Si j'attends plus de 10 secondes et rafraichi, ca regenere bien une autre session et efface j'ancienne expiree (base sur le ssid passe a new CGI::Session).
    Mais lorsque je ferme et rouvre le browser et me reconnecte, un fichier de session supplementaire est cree et l'ancien, meme expire n'est jamais efface.
    J'ai parcouru la doc des modules CGI en long, en large et en travers et je n'ai pas trouver de solution a mon probleme dedans.
    In code we trust !!

Discussions similaires

  1. probleme de gestion des attributs en session
    Par riadhhwajdii dans le forum JSF
    Réponses: 0
    Dernier message: 21/08/2009, 12h54
  2. Des sessions PHP qui font des caprices
    Par Maestro57 dans le forum Langage
    Réponses: 5
    Dernier message: 20/04/2009, 07h52
  3. [Forum] Généralisation des sessions sur tout le site
    Par sd110676 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 09/06/2007, 17h50
  4. [Sessions] Recupérer la liste des sessions en cours !
    Par Jaxofun dans le forum Servlets/JSP
    Réponses: 19
    Dernier message: 18/09/2006, 13h14
  5. [Session]Problème de fermeture de session
    Par july dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 16/06/2005, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo