ML
Pastas temporárias muito grandes
Olá, boa tarde!
Esta é minha primeira contribuição aqui, e espero que seja útil.
Em alguns sistemas que desenvolvi usando Adianti, é feito constantemente upload/download de arquivos, o que acaba por fazer as pastas temporárias ficarem imensas.
Apesar de haver formas de agendar a limpeza destas via cron, por exemplo, nem sempre a hospedagem fornece acesso para tanto ao usuário. Então, resolvi desta forma:
1 - Criei no arquivo de configuração uma entrada chamada definitions onde armazeno alguns parâmetros, e dentro dela coloquei um parâmetro tmpdir onde serão informados os diretórios temporários da aplicação a serem limpos, separados por |.
Depois, no arquivo init.php da raiz da aplicação, coloquei o código abaixo, que realizará a leitura das pastas informadas e apagará o conteúdo não usado há mais de 2 dias:
É isso! Se alguém tiver uma dica mais prática, por favor compartilhe conosco.
Valeu, abraços!
Esta é minha primeira contribuição aqui, e espero que seja útil.
Em alguns sistemas que desenvolvi usando Adianti, é feito constantemente upload/download de arquivos, o que acaba por fazer as pastas temporárias ficarem imensas.
Apesar de haver formas de agendar a limpeza destas via cron, por exemplo, nem sempre a hospedagem fornece acesso para tanto ao usuário. Então, resolvi desta forma:
1 - Criei no arquivo de configuração uma entrada chamada definitions onde armazeno alguns parâmetros, e dentro dela coloquei um parâmetro tmpdir onde serão informados os diretórios temporários da aplicação a serem limpos, separados por |.
- <?php
- [definitions]
- tmpdir = "/tmp/|/app/output/"
- ?>
Depois, no arquivo init.php da raiz da aplicação, coloquei o código abaixo, que realizará a leitura das pastas informadas e apagará o conteúdo não usado há mais de 2 dias:
- <?php
- // limpar arquivos temporários mas de 2 dias
- $root = getcwd();
- $directories = explode("|", $ini['definitions']['tmpdir']);
- foreach($directories as $pasta)
- {
- $tmpDir = $root.$pasta;
- if( is_dir($tmpDir))
- {
- //echo $tmpDir.' é Diretorio! ';
- $h=opendir($tmpDir);
- if( $h )
- {
- $t=time(); // agora
- while( $filetmp = readdir($h ) )
- {
- if( $filetmp != '.' && $filetmp!='..')
- {
- $filepath=$tmpDir.$filetmp;
- if( !is_dir($filepath) && file_exists( $filepath ) )
- {
- $lastModified = @filemtime( $filepath );
- if( $lastModified == NULL )
- $lastModified = @filemtime(utf8_decode($filepath));
- if( $lastModified )
- {
- if( $t - $lastModified > 172800) // 172800 seconds = 2 dias
- {
- @unlink($filepath);
- }
- }
- }
- }
- }
- closedir($h);
- }
- }
- }
- ?>
É isso! Se alguém tiver uma dica mais prática, por favor compartilhe conosco.
Valeu, abraços!
Marcelo, muito obrigado por sua contribuição, será muito útil para mim! :)
Uma dica, na linha 29 eu coloquei assim:
Para evitar a exclusão dos arquivos .htaccess pois os mesmos são necessário para manter a segurança dos diretórios