Para Magento CMS y similares (que no están limpiando sesiones antiguas), solo uso trabajos cron basados en la configuración de php.ini.
PHP5 / Ubuntu 14.04 / Debian
La configuración del sistema cron.d para php5 no limpia Magento ./var/session (ni nada aparte de la carpeta de sesión predeterminada (/ var / lib / php5 para Ubuntu y / var / lib / php5 / sessions o / tmp / para la mayoría de los otros Linux) Dists).
Pero aún puede usar "sessionclean" y "maxlifetime" según el cron predeterminado del sistema php5 / Debian:
Ejemplo que puedes probar desde la línea de comando:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Así que simplemente incorpórelo a un crontab de sistema / raíz o a un crontab de usuario que tenga permiso de lectura / escritura para los archivos de sesión:
$ sudo crontab -e
Agregue esto si quiere que se vea similar al sistema 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)
o - como sabemos que esos archivos / directorios existen:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Ahora tengo una cantidad manejable de sesiones y se mantiene limpia a través de la recolección de basura predeterminada / de por vida a través de la configuración de php.ini (cli).
(Puede dejar el comodín arriba o reemplazarlo con el nombre del sitio).
EDITAR (PHP7 / Ubuntu 16.xx / Debian):
El script 'sessionclean' ha cambiado y el script maxlifetime ha sido eliminado. Para el trabajo cron system / php, ahora es un script. Realmente ya no puede usar esto ya que las llamadas al archivo ahora son estáticas para el script.
El script php5 sessionclean anterior aún puede funcionar si el sistema no se está limpiando. Lo que puede hacer es tomar el paquete anterior de Debian php5 y extraerlo sessionclean
. O simplemente puede copiar esto en su área de scripts (otorgando los permisos / propiedad / var / www / (site) adecuados):
#!/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
También recomiendo renombrarlo, para que no se confunda con el nuevo cronjob 'sessionclean' de php. Luego puede insertar su propio número "maxlifetime" de la siguiente manera:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 es la edad de ejemplo (en minutos) y 'MySessionClean' es el script php5 renombrado descargado o copiado desde arriba).
De esta manera, evitamos las llamadas php.ini / env por completo.
(EDITAR 13DEC2016: Actualización de DEBIAN ARCHIVE REPO LINK)