Os arquivos de sessão do PHP já foram excluídos?

6

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?

    
por GetFree 04.05.2010 / 01:21

4 respostas

7

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.

    
por 04.05.2010 / 01:35
5

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 .

    
por 19.07.2012 / 12:49
1

Também na reinicialização - como / tmp está sempre desabilitado na reinicialização.

    
por 07.03.2012 / 19:00
1

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
    
por 04.05.2010 / 17:58