Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/04/2007, à 20:30

vivienfr

[résolut] PHP activer garbage collection avec Ubuntu

Bonjour,

J'ai un forum SMF que j'héberge sur une Ubuntu server 6.10

La base MySQL contient un table smf_session qui enfle de 700 Ko / jour

J'ai cherché le pourqoi sur les forum de SFM, réponse :

Probably you are running your forum on Debian/Ubuntu server. By default, a garbage collection is disabled on Debian's PHP. In effect (when database driven sessions option is checked) smf_sessions table isn't automatically cleared and grows with every new visit.

Dans le php.ini de mon serveur, il y a bien une partie 'garbage collection' :

; 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

;session.gc_probability = 0
session.gc_divisor     = 100

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

Je regarde /etc/cron.d/php5 , le fichier est bien présent, voici sont contenu :

# /etc/cron.d/php5: crontab fragment for php5
#  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/php5/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm

Donc pour moi il devrait s'executer toutes les demi-heures, mais pourtant ma base session gonfle toujours...

Si vous pouvez me mettre sur une piste smile pour activer ce  'garbage collection' via cron, je vous en remercie !

Vivien.

Dernière modification par vivienfr (Le 15/04/2007, à 23:19)


fr.archive.ubuntu.com : Statistiques sur les versions d'Ubuntu en France

Hors ligne

#2 Le 11/04/2007, à 22:35

stopher

Re : [résolut] PHP activer garbage collection avec Ubuntu

Le garbage collection est bien actif je te l'assure !!!

maintenant tu dis :

a base MySQL contient un table smf_session qui enfle de 700 Ko / jour

Mais je ne pense pas que le garbage collector va toucher à tes tables ... !!!

regardes plutôt du coté du script qui nettoye ta table "smf_session"

car là le cron :

09,39 *     * * *     root   [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm

ne fait que supprimer les vieux "fichiers" qui contiennent les variables de session mais en aucun cas il touche aux tables mysql !!

Dernière modification par stopher (Le 11/04/2007, à 22:35)

Hors ligne

#3 Le 12/04/2007, à 00:02

vivienfr

Re : [résolut] PHP activer garbage collection avec Ubuntu

stopher a écrit :

regardes plutôt du coté du script qui nettoye ta table "smf_session"

Normalement la table smf_sessions doit être petite, quelques ko. Mais chez certaines personnes (je ne suis pas le seul) elle enfle indéfiniment et représente la plus grosse part de la base mysql.

J'utilise la dernière version de SMF (Simple Machines Forum)

Le post qui accuse debian / ubuntu est http://www.simplemachines.org/community/index.php?topic=107704.msg782877#msg782877

J'ai peut être mal compris, peut être qu'il suffit de mettre
"session.gc_probability = 1" dans php.ini ?

par default on a dans le hph.ini de Ubuntu :

; 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
;session.gc_probability = 0
session.gc_divisor     = 100

Merci pour ton aide en tout cas.

Dernière modification par vivienfr (Le 12/04/2007, à 00:02)


fr.archive.ubuntu.com : Statistiques sur les versions d'Ubuntu en France

Hors ligne

#4 Le 12/04/2007, à 00:20

stopher

Re : [résolut] PHP activer garbage collection avec Ubuntu

session.gc_probability  entier

    Spécifie la probabilité, exprimée en pourcentage, en conjonction de session.gc_divisor, que la routine gc (garbage collection) soit démarrée à chaque requête. La valeur par défaut est 1. Voir session.gc_divisor pour plus de détails.
session.gc_divisor entier

    session.gc_divisor en conjonction avec session.gc_probability définit la probabilité que la routine gc (garbage collection) soit démarrée à chaque début de session. La probabilité est calculée en utilisant gc_probability/gc_divisor, par exemple 1/100 signifie qu'il y a 1 % de chance pour que la routine gc démarre à chaque requête. La valeur par défaut est 100.


voici ce site qui va certainement t'aider http://www.php.documentation.givah.fr/? … robability

Hors ligne

#5 Le 12/04/2007, à 15:38

vivienfr

Re : [résolut] PHP activer garbage collection avec Ubuntu

Merci beaucoup, problème résolut.

il suffisait bien de décommenter session.gc_probability et de le mettre = 1

quelques heures aprés ma table est passé de 22 Mo à quelques ko. (il faut l'optimiser car tout l'espace libérée par en "perte")

phpMyAdmin2.png

phpMyAdmin1.png


Dernière question, j'ai 2 fichier php.ini sur mon Ubuntu 6.10 :

/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini

J'ai trouvé la solution de modifier les deux mais à quoi correspond le php.ini qui est dans le dossier cli ?

Dernière modification par vivienfr (Le 12/04/2007, à 15:39)


fr.archive.ubuntu.com : Statistiques sur les versions d'Ubuntu en France

Hors ligne