Pour les CMS Magento et autres (qui ne nettoient pas les anciennes sessions), j’utilise simplement des tâches cron basées sur les paramètres php.ini.
PHP5 / Ubuntu 14.04 / Debian
Le programme d'installation cron.d pour php5 ne nettoie pas Magento ./var/session (ou autre chose que le dossier de session par défaut (/ var / lib / php5 pour Ubuntu et / var / lib / php5 / sessions ou / tmp / pour la plupart des autres) Linux dists).
Mais vous pouvez toujours utiliser "sessionclean" et "maxlifetime" selon le cron par défaut du système php5 / Debian:
Exemple, vous pouvez essayer depuis la ligne de commande:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Il suffit donc de l’intégrer à une crontab système / racine ou à une crontab d’utilisateur disposant des droits de lecture / écriture pour les fichiers de session:
$ sudo crontab -e
Ajoutez ceci si vous voulez qu'il ressemble au système php cron:
20,40 * * * * [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/www/*/var/session ] && /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
ou - puisque nous savons que ces fichiers / répertoires existent:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Maintenant, j'ai un nombre gérable de sessions et il est maintenu propre via la collecte de place par défaut / durée de vie via les paramètres php.ini (cli).
(Vous pouvez laisser le caractère générique ci-dessus ou le remplacer par sitename.)
EDIT (PHP7 / Ubuntu 16.xx / Debian):
Le script 'sessionclean' a été modifié et le script maxlifetime a été supprimé. Pour le travail système / php cron, il s’agit désormais d’un seul script. Vous ne pouvez plus vraiment l'utiliser car les appels de fichiers sont maintenant statiques dans le script.
L'ancien script php5 sessionclean peut toujours fonctionner pour vous si le système ne nettoie pas. Ce que vous pouvez faire, c'est récupérer l'ancien paquet Debian php5 et en extraire sessionclean
. Ou vous pouvez simplement copier ceci dans votre zone de scripts (en donnant les droits / var / www / (site) appropriés):
#!/bin/sh
# first find all used files and touch them (hope it's not massive amount of files)
[ -x /usr/bin/lsof ] && /usr/bin/lsof -w -l +d "${1}" | awk -- '{ if (NR > 1) { print $9; } }' | xargs -i touch -c {}
# find all files older then maxlifetime
find "${1}" -depth -mindepth 1 -maxdepth 1 -ignore_readdir_race -type f -cmin "+${2}" -delete
Je recommande également de le renommer afin qu'il ne soit pas confondu avec le nouveau cronjob php 'sessionclean'. Vous pouvez ensuite brancher votre propre numéro "maxlifetime" comme ceci:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 étant l'exemple de l'âge (en minutes) et 'MySessionClean' étant le script renommé php5 téléchargé ou copié depuis ci-dessus).
De cette manière, nous évitons entièrement les appels php.ini / env.
(EDIT 13DEC2016: Mise à jour de la liaison Debian ARCHIVE REPO)