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