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

Administration système Discussion :

Gestion des sessions php sous debian


Sujet :

Administration système

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Gestion des sessions php sous debian
    Salutations à tous !

    Je suis super novice en admin système et si je m'y penche aujourd'hui, c'est parce que mon serveur plante régulièrement, peut etre à cause des sessions.

    Ainsi, je voudrais comprendre comment marche le grabage collector des sessions php sur mon server.

    Tout a commencé par mon php.ini qui dit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ; This is disabled in the Debian packages, due to the strict permissions
    ; on /var/lib/php4.  Instead of setting this here, see the cronjob at
    ; /etc/cron.d/php4, which uses the session.gc_maxlifetime setting below
    ;session.gc_probability = 0
    session.gc_divisor     = 100
    En gros, ca me dit : ne fais pas ca dans ton php.ini, vas voir le cron /etc/cron.d/php4

    Donc, j'y vais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # /etc/cron.d/php4: crontab fragment for php4
    #  This purges session files older than X, where X is defined in seconds
    #  as the largest value of session.gc_maxlifetime from all your php.ini
    #  files, or 24 minutes if not defined.  See /usr/lib/php4/maxlifetime
     
    # Look for and purge old sessions every 30 minutes
    09,39 *     * * *     root   [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm
    Même si je ne comprend pas grand chose à ce job, je pense qu'il va vider les sessions toutes les 30 minutes (merci le commentaire )

    Ensuite, je continue mon chemin => See /usr/lib/php4/maxlifetime

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/sh -e
     
    max=1440
     
    for ini in /etc/php4/*/php.ini; do
    	cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true);
    	[ -z "$cur" ] && cur=0
    	[ "$cur" -gt "$max" ] && max=$cur
    done
     
    echo $(($max/60))
     
    exit 0
    J'ai cru comprendre que ce truc la allait chercher la plus grande valeur de gc_maxlifetime dans les php.ini pour le ré injecter le le code précédent qui lui, s'occupe des sessions !

    Cool, je crois avoir compris

    Je vais voir dans le var/log/syslog et la, miracle, je vois bien le cron s'executer toutes les 30 minutes !

    Seulement, voila, les sessions ont toujours une durée de vie infinie sur mon site.

    Ai-je loupé un truc ?

    En vous remerciant par avance de vos réponses !

    Un débutant un poil pommé, mais qui progresse peu à peu

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Que donne (sous root ou sudo):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # /usr/lib/php4/maxlifetime
    Le deuxième script va chercher *tous* les php.ini y compris ceux de php5-cli. Si tu changes la valeur de session.gc_maxlifetime, tu dois le faire dans tous ces php.ini.

    De plus, comme le script est écrit, la valeur minimum qu'il retourne est de 1440/60. A ta place, je mettrais:
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # /usr/lib/php4/maxlifetime
    donne 24

    Sinon, certains de mes utilisateurs me disent que leur session s'efface d'un coup, après quelques secondes d'inactivité !

    Le script purge t'il les sessions inactives depuis 24 minutes ou les sessions qui ont été créée il y a 24 minutes ?

    Ce qui je voudrais, c'est purger les sessions inactives seulement

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Le script ne va supprimer que les fichiers de session qui n'ont plus été modifiés depuis plus de 24 minutes.

    man find:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -cmin n
                  File’s status was last changed n minutes ago.

    Augmente session.gc_maxlifetime ou modifie tes scripts PHP pour qu'ils changent au moins une variable de session pour simuler une activité de session.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

Discussions similaires

  1. [MySQL] Gestion des sessions php
    Par stevenP dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 16/10/2012, 11h24
  2. Equivalent des sessions PHP sous Android
    Par verso61 dans le forum Android
    Réponses: 7
    Dernier message: 02/08/2012, 23h47
  3. Gestion des sessions sous wordpress
    Par alain31tl dans le forum WordPress
    Réponses: 11
    Dernier message: 09/06/2012, 15h19
  4. Gestion des sessions sous Struts
    Par evan32 dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/09/2009, 17h41
  5. Expiration des sessions PHP sous Firefox 2
    Par tomcoch dans le forum Langage
    Réponses: 2
    Dernier message: 08/04/2007, 00h08

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