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 :
En gros, ca me dit : ne fais pas ca dans ton php.ini, vas voir le cron /etc/cron.d/php4
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
Donc, j'y vais :
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 )
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
Ensuite, je continue mon chemin => See /usr/lib/php4/maxlifetime
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 !
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
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
Partager