Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/02/2008, 21h26   #1
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 1
Points : 1
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 :
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 :
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 :
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
blast078 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h53   #2
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
Que donne (sous root ou sudo):
Code :
# /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
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2008, 22h03   #3
Invité de passage
 
Inscription : mars 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 12
Points : 1
Points : 1
Code :
# /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
blast078 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 17h40   #4
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
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 :
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
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h07.


 
 
 
 
Partenaires

Hébergement Web