• http://nulll.netsons.org nulll

    mmm io ho una kubuntu 9.04 64bit
    in php.ini ho impostato

    session.gc_divisor 100
    session.gc_maxlifetime 120
    session.gc_probability 100

    quindi teoricamente ogni 2 minuti con una probabilità del 100% (quindi sempre) dovrebbe far cadere la sessione

    infatti se chiamo con il browser questo script e aspetto > 2minuti e faccio il refresh mi aspetto che la sessione sia caduta e che il vardump torni null… ma torna sempre true
    (ovviamente ho ristatato apache e verificato i valori immessi tramite phpinfo)
    <?php
    session_start();

    var_dump($_SESSION['b']);

    if(!isset($_SESSION['b']))
    $_SESSION['b'] = true;
    ?>

  • http://nulll.netsons.org nulll

    credo di aver capito il perchè…
    sembrerebbe che sulle Debian (ubuntu inclusa) il garbage collector non è realizzato da apache, ma da un cron di sistema

    /etc/cron/php5

    di default questo cron viene eseguito al minuto 9 e 39 di ogni ora
    va a leggere il valore in php.ini session.gc_maxlifetime ma (se ho visto bene) solo quello, non va a leggere session.gc_divisor e session.gc_probability

    Quindi tutto quello che hai scritto è giusto ma non si applica ad una Debian based con configurazione di default.

    Tra l'altro puoi mettere dentro session.gc_maxlifetime qualsiasi tipo di valore, ma se quel valore verrà letto ogni 30 minuti è chiaro che non funziona come ci si aspetta…

    Un po' di link x maggiori info
    http://drupal.org/node/160046
    http://oscarm.org/news/detail/666-debian_php5_a...
    https://bugs.launchpad.net/ubuntu/+source/php5/...

    Ora mi resta da capire come fare in modo che il garbage collector venga effettuato da apache anzichè dal cron

  • http://www.facebook.com/profile.php?id=575612345 facebook-575612345

    Ho controllato e hai ragione, ho aggiornato l'articolo con una spiegazione più precisa con questi dettagli inclusi.

  • http://www.timendum.net/blog/ timendum

    Ho controllato e hai ragione, ho aggiornato l'articolo con una spiegazione più precisa con questi dettagli inclusi.

  • Bruno

    Focca la bindella, sono 3 anni che inseguo un problema di scadenza della sessione, e forse (ma dico forse) il session.gc_maxlifetime è proprio il colpevole… peccato che adesso sono a 1500 km dal server che dovrei aggiornare e riavviare, quindi fino almeno a luglio non posso avere la risposta… ma già crepo di curiosità…!
    Grazie mille per l'ottimo tutorial!

blog comments powered by Disqus

Ultimi commenti