Bonsoir,
Je trouve que les explications du fichier de conf de php ne sont pas très claires concernant le garbage collector. Si quelqu'un pouvait m'expliquer ça serait cool.
Je suis sous debian et j'utilise un session.save_path personalisé (sur un ramdisk). Voilà le bout de mon php.ini intéressant concernant les sessions :
J'avais un problème de fichiers de session qui n'étaient pas supprimés (au passage, c'est plutôt vicieux de pas activer le GC par défaut...). J'ai donc décommenté la ligne "session.gc_probability = 1" et tout est rentré dans l'ordre. Par contre je ne comprends rien aux commentaires. Je crois comprendre que "session.gc_probability = 1" est commenté par défaut sous debian à causes des droits sur /var/lib/php5 qui empêchent le GC de fonctionner. Or lorsque j'ai décommenté cette ligne, mes fichiers session sont bien supprimés par le garbage collector. Alors je me dis que ça marche quand même parce que les fichiers session sont stockés dans un répertoire avec des droits souples, du coup la restriction lié à debian ne s'applique pas. Jusque là ok.
Mais je vois dans la note que si on utilise un répertoire différent de /var/lib/php5 pour stocker les sessions le GC ne doit pas marcher, alors qu'ils conseillent 10 lignes au dessus d'activer le GC si on utilise un rep personnalisé !! Ils disent des conneries dans la note ou c'est moi qui comprends rien ?
Je suis aussi allé voir du coté de /etc/cron.d/php5 qui dit :
J'ai vérifié dans le syslog, cette tache s'exécute bien. Mais elle ne sert à rien puisque d'une part le GC fait bien son travail et d'autre part elle vide le rep "/var/lib/php5" qui ne contient aucun fichier de session dans ma config...
Est-ce que je me trompe ?
Je trouve que les explications du fichier de conf de php ne sont pas très claires concernant le garbage collector. Si quelqu'un pouvait m'expliquer ça serait cool.
Je suis sous debian et j'utilise un session.save_path personalisé (sur un ramdisk). Voilà le bout de mon php.ini intéressant concernant les sessions :
Code:
; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.
; This is disabled in the Debian packages, due to the strict permissions
; on /var/lib/php5. Instead of setting this here, see the cronjob at
; /etc/cron.d/php5, which uses the session.gc_maxlifetime setting below.
; php scripts using their own session.save_path should make sure garbage
; collection is enabled by setting session.gc_probability
session.gc_probability = 1
session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440
; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm
J'avais un problème de fichiers de session qui n'étaient pas supprimés (au passage, c'est plutôt vicieux de pas activer le GC par défaut...). J'ai donc décommenté la ligne "session.gc_probability = 1" et tout est rentré dans l'ordre. Par contre je ne comprends rien aux commentaires. Je crois comprendre que "session.gc_probability = 1" est commenté par défaut sous debian à causes des droits sur /var/lib/php5 qui empêchent le GC de fonctionner. Or lorsque j'ai décommenté cette ligne, mes fichiers session sont bien supprimés par le garbage collector. Alors je me dis que ça marche quand même parce que les fichiers session sont stockés dans un répertoire avec des droits souples, du coup la restriction lié à debian ne s'applique pas. Jusque là ok.
Mais je vois dans la note que si on utilise un répertoire différent de /var/lib/php5 pour stocker les sessions le GC ne doit pas marcher, alors qu'ils conseillent 10 lignes au dessus d'activer le GC si on utilise un rep personnalisé !! Ils disent des conneries dans la note ou c'est moi qui comprends rien ?
Je suis aussi allé voir du coté de /etc/cron.d/php5 qui dit :
Code:
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm
J'ai vérifié dans le syslog, cette tache s'exécute bien. Mais elle ne sert à rien puisque d'une part le GC fait bien son travail et d'autre part elle vide le rep "/var/lib/php5" qui ne contient aucun fichier de session dans ma config...
Est-ce que je me trompe ?