Para o Magento CMS e similares (que não estão limpando sessões antigas), eu apenas uso tarefas cron com base nas configurações do php.ini.
PHP5 / Ubuntu 14.04 / Debian
A configuração cron.d do sistema para php5 não limpa o Magento ./var/session (ou qualquer outra coisa além da pasta de sessão padrão (/ var / lib / php5 para Ubuntu e / var / lib / php5 / sessions ou / tmp / para a maioria dos outros Linux) dists).
Mas você ainda pode usar "sessionclean" e "maxlifetime" conforme o cron padrão do sistema php5 / Debian:
Exemplo que você pode tentar na linha de comando:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Portanto, apenas incorpore isso em um crontab de sistema / raiz ou em um crontab de usuário que tenha permissão de leitura / gravação para os arquivos da sessão:
$ sudo crontab -e
Adicione isto que você deseja que seja semelhante ao 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)
ou - já que sabemos que esses arquivos / diretórios existem:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Agora eu tenho uma quantidade gerenciável de sessões e ela é mantida limpa via coleta de lixo padrão / tempo de vida através das configurações do php.ini (cli).
(Você pode deixar o curinga acima ou substituir pelo nome do site.)
EDIT (PHP7 / Ubuntu 16.xx / Debian):
O script 'sessionclean' foi alterado e o script maxlifetime foi removido. Para o trabalho cron do sistema / php, agora é um script. Você realmente não pode mais usar isso, pois as chamadas de arquivo agora estão estáticas no script.
O script php5 sessionclean mais antigo ainda pode funcionar se o sistema não estiver sendo limpo. O que você pode fazer é pegar o Pacote Debian php5 mais antigo e extraí sessionclean
-lo. Ou você pode simplesmente copiar isso na sua área de scripts (dando / var / www / (site) permissões / propriedade apropriadas):
#!/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
Também recomendo renomeá-lo, para que não seja confundido com o novo cronjob php 'sessionclean'. Você pode então conectar seu próprio número "maxlifetime" da seguinte maneira:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 sendo a idade do exemplo (em minutos) e 'MySessionClean' sendo o script php5 renomeado baixado ou copiado de cima).
Dessa maneira, evitamos completamente as chamadas do php.ini / env.
(EDIT 13DEC2016: LINK DE REPOUSO DE ARQUIVO DEBIANO atualizado)