Eles devem ser excluídos pelo coletor de lixo do PHP. A frequência é controlada pela configuração session.gc_maxlifetime
no php.ini. Possivelmente, se isso não estiver funcionando, você terá outros problemas.
Eu vejo que existem milhares de arquivos no meu diretório "/ tmp" (uma máquina do CentOS) e quase todos eles são arquivos de sessão do PHP.
Estou preocupado com o possível impacto que isso possa ter no meu sistema.
Esses arquivos já foram excluídos pelo sistema operacional, Apache ou PHP? ou eu tenho que cuidar disso sozinho?
Eles devem ser excluídos pelo coletor de lixo do PHP. A frequência é controlada pela configuração session.gc_maxlifetime
no php.ini. Possivelmente, se isso não estiver funcionando, você terá outros problemas.
No Debian e no Ubuntu padrão, as sessões são limpas pelo cron /etc/cron.d/php5
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete
onde /usr/lib/php5/maxlifetime
dá vida útil em minutos, conforme definido em session.gc_maxlifetime
.
Também na reinicialização - como / tmp está sempre desabilitado na reinicialização.
Você pode configurar um script cron para limpá-los automaticamente. Geralmente, é uma boa ideia testar a data de criação mais antiga do que a configuração da vida útil dos cookies no seu sistema.
Limitar a vida do cookie é feito desta forma (deve ser feito antes do script produzir qualquer coisa):
<?php
session_name('my_site_name');
session_set_cookie_params(1209600); # max cookie age of 14 days
# send cookie headers
session_start();
?>
Em seguida, no seu script de limpeza:
#!/bin/sh
find /tmp -maxdepth 1 -type f -name 'php_session_file_prefix*' -ctime +15 -exec rm -f {} \;
Então, no seu crontab:
# Run daily cron jobs at 03:40 every day
40 3 * * * /path/to/php-session-cleanup.sh
Tags php linux apache-2.2 web-server